zoukankan      html  css  js  c++  java
  • ASP.NET C# DataTable与Excel互操作示例

    前几天朋友公司开发需要用到Excel的导入导出,需要通过Web将数据库中的内容与Excel互导!问到我,自己以前做过,网上很多类似的解决方案都是使用类似DataGrid或GridView这样的控件直接导入到Excel,方便,但不是很实用,有时候甚至导出的Excel并不是我们需要的格式!记得曾经听邵志东老师讲过ASP.NET下的自动化操作。但一时又没找到相关的代码。在这里我将自己的示例在这贴出,以方便有自己和以后有这方面需要的朋友查询!

    页面运行效果如下

    “生成DataTable”的作用就是在内在中创建一个DataTablle 然后使用Repeater显示

     protected void btnLoadDt_Click(object sender, EventArgs e)
        
    {
            BindData(LoadDataTable());
        }

        
    //创建DataTable
        private DataTable LoadDataTable()
        
    {
            DataTable dt 
    = new DataTable();
            DataColumn dc 
    = new DataColumn("userName");
            dt.Columns.Add(dc);
            dc 
    = new DataColumn("userSex");
            dt.Columns.Add(dc);

            DataRow dr 
    = dt.NewRow();
            dr[
    0= "fengyan";
            dr[
    1= "male";
            dt.Rows.Add(dr);

            dr 
    = dt.NewRow();
            dr[
    0= "efly";
            dr[
    1= "male";
            dt.Rows.Add(dr);

            dr 
    = dt.NewRow();
            dr[
    0= "楚旋";
            dr[
    1= "male";
            dt.Rows.Add(dr);

            
    return dt;
        }

    点击DataTablle导出Excel即可将该DataTable 内容导出到指定的Excel中。相关代码如下:
    protected void btnExportExcel_Click(object sender, EventArgs e)
        
    {
            
    //得到需要导入Excel的DataTable
            DataTable dt = LoadDataTable();
            
    //将其列名添加进去! (这一步注意是为了方便以后将该Excel导入内存表中 自动创建列名用。)
            DataRow dr = dt.NewRow();
            dr[
    0= "userName";
            dr[
    1= "userSex";
            dt.Rows.InsertAt(dr, 
    0);

            
    //实例化一个Excel助手工具类
            ExcelHelper ex = new ExcelHelper();
            
    //导入所有!(从第一行第一列开始)
            ex.DataTableToExcel(dt, 11);
            
    //导出Excel保存的路径!
            ex.OutputFilePath = txtExcelPath.Text;
            ex.OutputExcelFile();
        }
    运行后打开生成的Excel如下:

    已经将内容导出到Excel。现在在其中添加一行内容
     
    如果要将该Excel再读取到DataTable中比较简单,可以使用ADO.NET
    Excel导入DataTable事件代码如下:
     protected void btnExcelToDataTable_Click(object sender, EventArgs e)
        
    {
            
    string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + txtFromExcel.Text + ";Extended Properties=Excel 8.0";
            
    //链接Excel
            OleDbConnection cnnxls = new OleDbConnection(strConn);
            
    //读取Excel里面有 表Sheet1
            OleDbDataAdapter oda = new OleDbDataAdapter("select * from [Sheet1$]", cnnxls);
            DataSet ds 
    = new DataSet();
            
    //将Excel里面有表内容装载到内存表中!
            oda.Fill(ds);
            DataTable dt 
    = ds.Tables[0];
            BindData(dt);
        }
    运行后页面如下:

    可以看到从Excel又读回数据并且自动绑定到Repeater上,我们增加的一行数据也正确显示了!
    之所以可以正确绑定出来,是因为我们在导出的时候在Excel最上行添加了一行列名,所以可以对应绑定!
    实际中更多的是数据库和Excel的互操作!本文讲到DataTable,从DataTable到数据库的转换也是容易的!
    数据从Excel导入到DataTable后,我们可以通过编写少量代码即可将数据 添加或更新回数据库!这也是可以的!

    本示例代码下载/Files/eflylab/ExcelHelper.rar
  • 相关阅读:
    使用 Eclipse PhoneGap 构建 Android 应用程序入门
    SSAS系列——【01】准备知识
    HDU 5763 Another Meaning 2016多校第四场1001 KMP+DP
    HDU 5794 A Simple Nim 2016多校第六场1003
    HDU 5758 Explorer Bo 2016多校第三场1007 树上DP
    HDU 5755 Gambler Bo 2016多校第三场1004
    HDU 5754 Life Winner Bo 2016多校第三场1003
    vue2.0引入腾讯地图
    MVC Razor模板引擎输出HTML或者生产HTML文件
    慎把“DataContext”静态化 或则单例
  • 原文地址:https://www.cnblogs.com/eflylab/p/1157491.html
Copyright © 2011-2022 走看看