ASP.NET COM 把DataTable的数据 分sheet 导出到Excel
来源:互联网 发布:大数据精准推荐竞彩app 编辑:程序博客网 时间:2024/05/12 20:17
注意了 我是利用asp.net COM 进行EXcel操作的
office版本Excel2003 com接口 是Microsoft.Office.Interop.Excel 11.0版本。 // 2003 一定要11.0版本 不然出错
在做多个sheet导出时 我碰到N多个错误 用了我三天的时间才弄出来
下面是我碰到错误的详解 和 百度 谷歌时 帮助最大的资料
都贡献出来了
EXCEL2003 配置
如果机器上先安装的office 然后又安装的.netFrameWork 要重新注册一下office
请看下面网页内容
http://msdn.microsoft.com/zh-cn/library/aa159923(v=office.11).aspx
配置好EXCEL后
引进Com
如果你已经完成代码 进行调试后后发现
Excel.Application app = new Excel.Application();
这句出错了 权限不足
关于asp.net的权限问题的设计 请见下面网页 写的很详细
http://hi.baidu.com/tewuapple/blog/item/2cf7e8ed829ebbc12e2e21e1.html
配置好这些东西后 终于开始代码了
这里有一下经典范例 可以给大家借鉴
下面网页
http://hi.baidu.com/user_pyw/blog/item/d6e8aed0e140a9dd572c84a2.html
看到这里你也许会松口气了 不过 上面的例子是单个sheet操作
对于多个sheet操作 又狂找一番
下面是我自己的代码 给大家看一下啊
Using Excel; 引入命名空间 // CTRL + J 可以看到所有的命名空间
// 我把Excel操作放到一个方法里面了
private void Excel()
{
Excel.Application app = new Excel.Application();
Excel.Workbooks ws = app.Workbooks;
Excel.Workbook workbook = ws.Add(Excel.XlWBATemplate.xlWBATWorksheet); // 默认已经创建了一个worksheet
System.Data.DataTable dt = new System.Data.DataTable
//注意 一定要加上System.Data.DataTable 因为Excel本身也有DataTable 否则会出现DataTable 两异性的错误
dt .Columns.Add(new DataColumn("aaa",typeof(string)));
dt .Columns.Add(new DataColumn("bbb",typeof(string)));
dt .Columns.Add(new DataColumn("ccc",typeof(string)));
DataRow dr = dt.NewRow()
dr["aaa"]=“Jenat1”;
dr["bbb"]=“Jenat2
dr["ccc"] =“Jenat3”;
dtName.Rows.Add(dr);
int sheetCount = 10 // 这是sheet的数据 这是我假定的 方便实例 实际情况中可以另当别论
workbook.Sheets.Add(Type.Missing,workbook.Sheets[1],dtName.Rows.Count-1,Type.Missing);
// 关于Add参数 有四个 第一个参数是添加的位置 before 和 after 默认是after 第二个参数是添加在哪一个工作表前和后
// 第三个参数 是添加的worksheet个数 第四个参数忘记了
// 为worksheet添加数据
for(int i=1;i<workbook.Sheets.Count;i++)
{
Excel.Worksheet worksheet =(Excel.Worksheet)workbook.Worksheets[m]; //一次得到worksheet worksheet.Name = drName["user_id"].ToString(); // 为worksheet设置名字
for(int i=0;i<dt.Columns.Count;i++)
{ worksheet.Cells[1,i+1] =dt.Columns[i].ColumnName.ToString();
}
for(int r=0;r<dt.Rows.Count;r++)
{
for(int y=0;y<dt.Columns.Count;y++)
{
worksheet.Cells[r+2,y+1] = dt.Rows[r][y].ToString();
}
}
}
worksheet.Columns.EntireColumn.AutoFit(); //自动适应长度
string filepath = HttpContext.Current.Server.MapPath("TestResult.xls"); //定义存放的位置和Excel名称
workbook.Saved = true;
workbook.SaveCopyAs(filepath);
// workbook 有三种保存 saved saveCopyAs saveAS 我也没搞懂什么意思 不过SaveAS参数很多
我用了以后报错 如果你要关闭的话 一定要先保存 不然workbook 是空的
HttpContext.Current.Response.Buffer = true;
HttpContext.Current.Response.Clear();
Response.Charset="GB2312";
Response.ContentEncoding=System.Text.Encoding.UTF8;
HttpContext.Current.Response.ContentType = "application/ms-excel";
HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment;filename="+ HttpUtility.UrlEncode("TestResult.xls"));
// 貌似下面这句也必须有 我删掉以后 没有数据
HttpContext.Current.Response.WriteFile(filepath);
HttpContext.Current.Response.Flush();
app.Quit();
GC.Collect();
HttpContext.Current.Response.End();
}
把我碰到的错误写出来 给需要的人一点借鉴 感谢CSdn的人 给了很大的帮助
- ASP.NET COM 把DataTable的数据 分sheet 导出到Excel
- Asp.net将DataTable分多个Sheet导出到Excel
- Asp.net将DataTable分多个Sheet导出到Excel
- ASP.NET 分Sheet导出EXCEL 2003
- asp.net把数据导出到Excel表格的代码
- asp.net 快速简单的导出数据 DataTable导出到Excel、GSV
- ASP.NET将数据导出到一个EXCEL文件的多个SHEET中
- ASP.net 把 DataGrid 数据导出到 Excel .
- asp.net 使用Linq 把数据导出到Excel
- ASP.net 把 DataGrid 数据导出到 Excel .
- 关于导出excel 把一个dataset的多个datatable导入到一个excel的多个sheet中
- 导出Excel 把一个dataset的多个datatable导入到一个excel的多个sheet中
- 导出Excel 把一个dataset的多个datatable导入到一个excel的多个sheet中
- 把DataTable导出到Excel
- Asp.net中把DataTable或DataGrid导出为Excel
- Asp.net中把DataTable或DataGrid导出为Excel
- 【asp】把数据导出到excel文件
- .net 通过NPOI或MyXls把DataTable导出到Excel
- 数据仓库与元数据管理
- C缺陷与陷阱点滴(二)
- PowerDesigner 15安装问题
- JAVA高级工程师笔试面试题
- BSD接口层关键数据结构
- ASP.NET COM 把DataTable的数据 分sheet 导出到Excel
- SQLServer索引碎片和解决方法
- 浅谈 Linux 内核开发之 PCI 设备驱动
- javascript:void(0)
- 基于OSGI规范Equinox实现的Web组件化松耦合、热插拔架构
- 日志版
- php整形类型
- openGL中的Texture/MultiTexture Mapping
- 端口被谁占有了?