这个问题困扰了我好几天,现在终于解决了,现公布整个过程的注意点。通过.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表(小结)相关推荐

  1. 【译】Asp.Net 导出 Excel 数据的9种方案

    简介 Excel 的强大之处在于它不仅仅只能打开Excel格式的文档,它还能打开CSV格式.Tab格式.website table 等多钟格式的文档.它具备自动识别行号,字符,格式化数字等功能,例如: ...

  2. 机房重构之导出Excel表

    在导出excel表的时候,先后尝试了两种方法.第一种方法是添加Microsoft.Office.Interop的引用.第二种方法是用了第三方控件NPOI.下面就介绍一下我的excel之旅. 方法一.添 ...

  3. asp.net导出excel示例代码

    asp.net导出excel示例代码 asp.net导出excel的简单方法. excel的操作,最常用的就是导出和导入. 本例使用NPOI实现. 代码:/// <summary>     ...

  4. 【机房收费系统】---导出Excel表

    一.背景 机房收费系统中有很多地方用到了"导出Excel表"这个功能,那么,怎么导出呢? 二.导出Excel表 1.电脑安装office 2.引用 之前已经有一篇博客介绍过如何引用 ...

  5. 关于扫码签到统计信息,一键导出excel表

    1.首先进入草料二维码官网 2.微信扫码登录注册,登录成功后即可进入草料二维码后台(手机微信小程序也可以实时查看后台数据) 3.根据自己需要创建活动二维码(选择自己喜欢的模板,这里我们选择的是会议签到 ...

  6. 数据的导出Excel表

    数据的导出Excel表 1.原理 ​ 点击前端页面的按钮函数,函数里面去调用后端对应对的请求地址,这个请求地址所对应的方法再去调用业务层,业务层再去持久层拿到数据,返回给控制层,控制层将数据封装为比特 ...

  7. JSON数据导出Excel表

    JSON数据导出Excel表 应老板要求写了一个实用的小功能,需求是将api接口返回的JSON数据导出Excel表,过程中改了两稿,一是前端js直接导出一个表,另一是分门别类在java中同时导出多个表 ...

  8. springmvc使用easypoi导出导入Excel表(1):导出Excel表

    编译工具:eclipse 项目:maven+ssm springmvc使用easypoi导出导入Excel表(2):导入Excel表 在pom.xml引入easypoi的依赖包: <!--eas ...

  9. django 导出数据到excel表 导出excel表到目标路径及客户端下载

    python导出excel表利用的是xlwt模块 学习的网址 大佬教学网址 导出数据到excel表 下面是代码 import os from xlwt import Workbook from inf ...

最新文章

  1. Blender建筑可视化技能学习视频教程
  2. OD使用教程18 - 调试篇18
  3. 深度学习核心技术精讲100篇(六十)-深度学习分类算法之神经网络
  4. Python的10大最佳功能是什么?
  5. 初学Spring Boot
  6. 俞永福卸任阿里大文娱董事长,改任 eWTP 投资组长
  7. 微软这次开源的是 Windows 计算器
  8. java 获取服务器IP地址及MAC地址
  9. 如何使用数据质量服务和SQL Server集成服务清除数据
  10. 耳机热插拔检测(五)
  11. 【心电信号】基于matlab心电信号去除基线漂移【含Matlab源码 955期】
  12. 交换机SERDES介绍
  13. 常见卫星汇总--期待大神补充下载地址
  14. 解决windows10中springboot的jar启动之后的假死状态
  15. NDB Cluster基本操作
  16. matlab 梳妆函数,梳状函数.PPT
  17. win xp使用技巧
  18. Jetbot小车系列文章学习
  19. Qt控件边框颜色设定
  20. 数据治理之数据模型管控方案

热门文章

  1. 在两个ASP.NET页面之间传递变量【转】
  2. UIView 中常见的方法总结
  3. 网站“拍照”备案月底恐难实施
  4. Java中的正则表达式 - Java Regex示例
  5. Fedora/RedHat安装Mysql8.0
  6. SDN——转控分离、CPU保护机制——COPP技术案列详解及配置命令、
  7. 厦门大学c语言模拟考试题,厦门大学《C语言》模拟试卷(10级).doc
  8. github推荐好玩项目
  9. 面向对象设计原则之1-单一职责原则
  10. jmespath查找JSON的工具