zoukankan      html  css  js  c++  java
  • [转]C# web 读取Excel文件

    项目中总是遇到要整理基础数据的问题,少量的数据还好说,如果数据量大的话,这无疑会增加项目开发的用时,拖延交期。

    那么我们会让客户自己去整理基础数据,但是问题是,客户整理的数据怎写入系统呢?我们一般会采用excel文件,给定客户格式,让其按照格式整理,这样我们就可以导入数据库了,但是在使用的过程中又会产生一些基础数据,我们不可能会再次去帮助用户导入数据,那么这个时候,我们就需要用到一个功能,那就是把excel文件导入到数据库中,那么现在我们就来实现这个功能。

    //=====================================================================
    // 苏州塔西亚软件有限公司 
    // 创建人: Aple
    // 日 期: 2010-09-23
    // 描 述: 读取excel数据
    // QQ群: asp.net(C#)技术交流 71436018
    // 版 本: 1.0.0.0
    //=====================================================================

    首先在页面上放3个控件,一个FileUpload(ID:FileUpload1),一个button(ID:btnRead),一个gridview(ID:GridView1),首先说明下3个控件的作用,

    第一个 FileUpload1:用来让用户选择数据源excel的

    第二个 btnRead:选择好数据源以后,读取数据按钮

    第三个 GridView1:显示数据控件,把刚刚读取的数据显示出来

    下面贴出方法:

       #region 读取excel数据
            /// <summary>
            /// 读取excel数据返回datatable
            /// </summary>
            /// <param name="sheetName">要读取数据的sheet的名字</param>
            /// <returns>返回excel里的数据</returns>
            public DataTable ReadExcelData(string sheetName,FileUpload UpLoadFile)
            {
                string strFileName = "";
                DataSet ds = new DataSet();
                DataTable dt;
                 String fileName = UpLoadFile.PostedFile.FileName.Substring(UpLoadFile.PostedFile.FileName.LastIndexOf("\") + 1, UpLoadFile.PostedFile.FileName.Length - 1 - UpLoadFile.PostedFile.FileName.LastIndexOf("\"));
                ///取到当前时间的年、月、日、分、秒和毫秒的值,并使用字符串格式把他们组合成一个字符串
                String fileTime = DateTime.Now.Year.ToString() + DateTime.Now.Month.ToString()
                + DateTime.Now.Day.ToString() + DateTime.Now.Hour.ToString()
                + DateTime.Now.Second.ToString() + DateTime.Now.Minute.ToString()
                + DateTime.Now.Millisecond.ToString();
                ///在时间字符串后面添加一个随机数和文件的后缀名
                String src = fileName.Substring(fileName.LastIndexOf(".") + 1, fileName.Length - fileName.LastIndexOf(".") - 1).ToLower();
                fileName = fileTime + GetRandomint() + "." + src;
                //上载文件到服务器硬盘
                UpLoadFile.PostedFile.SaveAs(Server.MapPath(Request.ApplicationPath) + "UserFile\" + fileName);
                strFileName = Server.MapPath(Request.ApplicationPath) + "UserFile\" + fileName;
                string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= "+ strFileName + "; Extended Properties='Excel 8.0'";
                OleDbDataAdapter oada = new OleDbDataAdapter("select * from ["+sheetName+"$]", strConn);
                oada.Fill(ds);
                dt = ds.Tables[0];
                return dt;
            }
            #endregion

    以上方法用到一个随机数的方法

    private static string GetRandomint()
           {
                 Random random = new Random();
                 return(random.Next(10000).ToString());    //产生一个小于10000的随机正整数
           }
    好了,有了这2个方法,我们就可以在 button 按钮的事件里调用这个方法了:

    调用如下:

    DataTable dt= ReadExcelData("查询", FileUpload1);
               GridView1.DataSource = dt;
               GridView1.DataBind();

    当然喽,这只是最基本的读取excel数据,如果想插入数据那就得按照规定的格式整理excel,然后从datatable里读取数据循环插入数据库。

    记得引用 using System.Data.OleDb;

  • 相关阅读:
    VS调试Libevent流程
    Lua require搜索路径指定方法
    关于“无法定位程序输入点gzdirect于动态链接库zlib1.dll”的问题
    poj 1737 Connected Graph
    迭代器挺好用的
    The Balance of the World Aizu
    Country Road Aizu
    牛客小白月赛4 C 病菌感染
    牛客小白月赛4 A 三角形
    老子的全排列呢
  • 原文地址:https://www.cnblogs.com/ljg3020/p/3715184.html
Copyright © 2011-2022 走看看