• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ASP.NETC#DataTable与Excel互操作示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

前几天朋友公司开发需要用到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, 1, 1);
        
//导出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后,我们可以通过编写少量代码即可将数据 添加或更新回数据库!这也是可以的!


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
asp.net甘特图控件免费下载地址发布时间:2022-07-10
下一篇:
ASP.NET前台html页面AJAX提交数据后台ashx页面接收数据发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap