ASP.Net导出EXCEL表(小结)
这个问题困扰了我好几天,现在终于解决了,现公布整个过程的注意点。通过.net导出Excel表,除了注意导出的方法外,还要关心资源的回收问题,中间涉及到COM组件的关闭等。
因为对windows系统、.Net不熟,所以中间可能有多余的步骤。最终可以实现就算了,不深究。
1. 导出EXCEL表
添加引用:在“COM”选项卡上,找到“Microsoft Excel 10.0 对象库或 Microsoft Excel 11.0 对象库”,然后单击“选择”。(office2007和2003的版本会有少许区别,我在2007只找到Microsoft Excel 12,但编程的时候却无法显示Excel命名空间的内容,所以还不是我们所要的。最后我是从一个以前的项目的bin目录里,把旧的Interop.Excel.dll导入,缺乏安全及稳定的考虑,所以小孩子不要学我哦,造成的结果自己承担)
代码实现:
这段来自一个高人的,忘了从哪里抄来的,请作者原谅!
using Microsoft.Office.Core;
private void DoExport(DataSet ds, string FilePath)
{
Excel.Application xls = new Excel.Application();
int rowIndex = 1;
int colIndex = 1;
xls.Application.Workbooks.Add(true);
if (ds.Tables.Count > 0)
{
DataTable dt = ds.Tables[0];
foreach (DataColumn col in dt.Columns)
{
xls.Cells[1, colIndex] = col.ColumnName;
colIndex++;
}
foreach (DataRow row in dt.Rows)
{
rowIndex++;
colIndex = 1;
foreach (DataColumn col in dt.Columns)
{
xls.Cells[rowIndex, colIndex] = row[col.ColumnName].ToString();
colIndex++;
}
}
}
xls.Visible = false;
/* 只能用旧的格式 Excel.XlFileFormat.xlExcel7,office2007不支持 Excel.XlFileFormat.xlExcel9597 */
xls.ActiveWorkbook.SaveAs(FilePath, Excel.XlFileFormat.xlExcel7, null, null, false, false, Excel.XlSaveAsAccessMode.xlNoChange, null, null, null, null, null);
xls.Workbooks.Close();
xls.Quit();
zxpGCCollect.ReleaseComObject(xls); /* 这里是我的一个资源回收的方法,具体请看下面 */
GC.Collect();
}
2. 资源回收。这一步非常重要,否则用户每导出一张表,服务器就会开一个excel的进程。
【 资源回收前的设置 】
容易出现的问题:asp.net操作Excel失败问题(80070005) http://www.hccar.com/index.aspx
在执行页面的目录底下再建多一个web.config
<system.web>
<!--
在这里添加下面这句
-->
<identity impersonate="true" userName="用户名" password="密码"/>
</system.web>
在C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\CONFIG的machine.config
<processModel enable="true" timeout="Infinite" idleTimeout="Infinite" shutdownTimeout="0:00:05" requestLimit="Infinite" requestQueueLimit="5000" restartQueueLimit="10" memoryLimit="60" webGarden="false" cpuMask="0xffffffff" userName="System" password="AutoGenerate" logLevel="Errors" clientConnectedCheck="0:00:05" comAuthenticationLevel="Connect" comImpersonationLevel="Impersonate" responseRestartDeadlockInterval="00:09:00" responseDeadlockInterval="00:03:00" maxWorkerThreads="25" maxIoThreads="25"/>
在上面的userName="machine" 改为 userName="System"
【 资源回收代码 】
http://topic.csdn.net/t/20040323/14/2875770.html
http://blog.csdn.net/hanxuema2008/archive/2008/11/21/3344409.aspx
http://dotnet.chinaitlab.com/CSharp/759079.html
public class zxpGCCollect
{
public zxpGCCollect()
{
}
//这种方法需要处理权限问题
public static void KillExcelProcess(Excel.Application excel)
{
IntPtr ptr = new IntPtr(excel.Hwnd);
int k = 0;
zxpWin32API.GetWindowThreadProcessId(ptr, out k);
System.Diagnostics.Process pro = System.Diagnostics.Process.GetProcessById(k);
pro.Kill();
}
public static void ReleaseComObject(object obj)
{
System.Runtime.InteropServices.Marshal.ReleaseComObject(obj);
}
}
ASP.Net导出EXCEL表(小结)相关推荐
- 【译】Asp.Net 导出 Excel 数据的9种方案
简介 Excel 的强大之处在于它不仅仅只能打开Excel格式的文档,它还能打开CSV格式.Tab格式.website table 等多钟格式的文档.它具备自动识别行号,字符,格式化数字等功能,例如: ...
- 机房重构之导出Excel表
在导出excel表的时候,先后尝试了两种方法.第一种方法是添加Microsoft.Office.Interop的引用.第二种方法是用了第三方控件NPOI.下面就介绍一下我的excel之旅. 方法一.添 ...
- asp.net导出excel示例代码
asp.net导出excel示例代码 asp.net导出excel的简单方法. excel的操作,最常用的就是导出和导入. 本例使用NPOI实现. 代码:/// <summary> ...
- 【机房收费系统】---导出Excel表
一.背景 机房收费系统中有很多地方用到了"导出Excel表"这个功能,那么,怎么导出呢? 二.导出Excel表 1.电脑安装office 2.引用 之前已经有一篇博客介绍过如何引用 ...
- 关于扫码签到统计信息,一键导出excel表
1.首先进入草料二维码官网 2.微信扫码登录注册,登录成功后即可进入草料二维码后台(手机微信小程序也可以实时查看后台数据) 3.根据自己需要创建活动二维码(选择自己喜欢的模板,这里我们选择的是会议签到 ...
- 数据的导出Excel表
数据的导出Excel表 1.原理 点击前端页面的按钮函数,函数里面去调用后端对应对的请求地址,这个请求地址所对应的方法再去调用业务层,业务层再去持久层拿到数据,返回给控制层,控制层将数据封装为比特 ...
- JSON数据导出Excel表
JSON数据导出Excel表 应老板要求写了一个实用的小功能,需求是将api接口返回的JSON数据导出Excel表,过程中改了两稿,一是前端js直接导出一个表,另一是分门别类在java中同时导出多个表 ...
- springmvc使用easypoi导出导入Excel表(1):导出Excel表
编译工具:eclipse 项目:maven+ssm springmvc使用easypoi导出导入Excel表(2):导入Excel表 在pom.xml引入easypoi的依赖包: <!--eas ...
- django 导出数据到excel表 导出excel表到目标路径及客户端下载
python导出excel表利用的是xlwt模块 学习的网址 大佬教学网址 导出数据到excel表 下面是代码 import os from xlwt import Workbook from inf ...
最新文章
- Blender建筑可视化技能学习视频教程
- OD使用教程18 - 调试篇18
- 深度学习核心技术精讲100篇(六十)-深度学习分类算法之神经网络
- Python的10大最佳功能是什么?
- 初学Spring Boot
- 俞永福卸任阿里大文娱董事长,改任 eWTP 投资组长
- 微软这次开源的是 Windows 计算器
- java 获取服务器IP地址及MAC地址
- 如何使用数据质量服务和SQL Server集成服务清除数据
- 耳机热插拔检测(五)
- 【心电信号】基于matlab心电信号去除基线漂移【含Matlab源码 955期】
- 交换机SERDES介绍
- 常见卫星汇总--期待大神补充下载地址
- 解决windows10中springboot的jar启动之后的假死状态
- NDB Cluster基本操作
- matlab 梳妆函数,梳状函数.PPT
- win xp使用技巧
- Jetbot小车系列文章学习
- Qt控件边框颜色设定
- 数据治理之数据模型管控方案