最近项目中有一个导出excel报表的需求。大体就是将一个datatable中的数据导出到excel供用户下载。开始也想过几种方法:

1.因为报表已经在页面上展现出来了,所以想能不能使用js直接将页面的table给保存到excel中,如果真能实现那还真讨巧了。但是查了一下使用js好像都必须用到activex组件,也就限制了只能在IE下使用。否决。

2.为了兼容大多数的浏览器貌似只能将生成工作放在服务器端了。两个问题。一,如何生成。二,生成了以后如何给用户。

对于第一个问题,我刚开始想直接写字符串,中间使用\t分隔。虽然这样也能生成“伪excel”(暂时这么叫吧)不过效果却不好。不能控制单元格的样式以及合并。也有一种方法是使用微软的office组件,不过这要求你在服务器上安装了office,而且据说使用这种方法在进程释放方面有问题。

对于第二个问题,有人是直接在服务器端生成后将连接发送给用户给用户下载。有人是直接给response设置头信息,让浏览器直接返回下载。显然第二种方法要好得多。

总之想要既简单又很好的到处excel也不是那么简单的一回事。不过嘛……有了myxls以后,一切就变得美好又简单了。

Myxls

MyXls是用C#开源项目,可以应用于asp.net 或者 .net应用程序上。它根据微软公开的Excle文档格式文件(BIFF),以二进制格式直接生成excel文档,支持Excel versions 97 - 2007。目前MyXls已经实现了单元格(cell)的格式设置,包括文本颜色、文本大小、字体、单位格边框、底色、列宽、行高,合并单元格,多个sheet页等功能。

你可以在这里找到myxls项目:http://sourceforge.net/projects/myxls/

需要注意的是,如果你想在asp.net中使用myxls,那么上面链接中的download并不适合你,因为那是针对silverlight的。你可以到这里下载asp.net版本的http://sourceforge.net/projects/myxls/files/MyXls/v0.6.3/

说完了介绍,我们再来说说如何使用。我做了一个demo,希望可以帮助你更加直观的了解如何使用myxls。下面一段代码是demo中将datatable输出为为excel的方法:

        private XlsDocument DataTableExportToExcel(DataTable dataTable, string excelName, string sheetName){XlsDocument xls = new XlsDocument();    //新建一个xls文档 xls.FileName = excelName + ".xls";   //设定Excel文件名 Worksheet sheet = xls.Workbook.Worksheets.Add(sheetName);//填加名为"第一个Sheet Demo"的sheet页 Cells cells = sheet.Cells;//Cells实例是sheet页中单元格(cell)集合 for (int row = 0; row < dataTable.Rows.Count; row++){for (int column = 0; column < dataTable.Columns.Count; column++){object val = dataTable.Rows[row][column];//对于数字,需要将其转化为数字类型。否则将默认以字符串类型输出到excel中double doubleVal;if (double.TryParse(val.ToString(), out doubleVal)){cells.Add(row + 1, column + 1, doubleVal);}else{cells.Add(row + 1, column + 1, val.ToString());}}}return xls;}

对于返回的xls变量,只需要使用

xls.Send();

就可以将excel流返回到客户端,此时浏览器会自动弹出excel下载窗口供用户下载了。输出的截图如下:

Demo下载

http://dl.dbank.com/c0b5au1uuz

转载于:https://www.cnblogs.com/qianlifeng/archive/2011/08/21/2147873.html

Myxls导出excel报表相关推荐

  1. VS中用Myxls生成Excel报表

    本文详细叙述一下如何在VS中导出Excel报表,不足之处,还望见谅.Excel报表的导出有两种方式,一种是使用自身电脑预装的office的Excel组件:另一种是是用Myxls.这里介绍Myxls,m ...

  2. Atitit.导出excel报表的设计与实现java .net php 总

    Atitit.导出excel报表的设计与实现java .net php 总结 1. 导出报表 表格的设计要素1 1.1. 支持通用list<Map>转换1 1.2. 对于空列是否输出1 1 ...

  3. Java程序员从笨鸟到菜鸟之(一百零四)java操作office和pdf文件(二)利用POI实现数据导出excel报表...

    在上一篇博客中,我们简单介绍了java读取word,excel和pdf文档内容 ,但在实际开发中,我们用到最多的是把数据库中数据导出excel报表形式.不仅仅简单的读取office中的数据.尤其是在生 ...

  4. Acey.ExcelX实例演练(1)—从GridView中导出Excel报表

    Acey.ExcelX实例演练(1) -从GridView中导出Excel报表 关键词:GridView,数据绑定,Excel报表 在开发过程中我们经常遇到需要将页面中查看到的数据导出Excel的情况 ...

  5. java报表的导出excel_java导出excel报表

    1.java导出excel报表: package cn.jcenterhome.util; import java.io.OutputStream; import java.util.List; im ...

  6. php导出excel报表

    php导出excel报表方式网上有很多种,有的方法已经过时,有的看不懂,运行有错误,所以找资料时难免苦恼.在这里给大家分享一个简单易用的方法,致力于让大家一看就会,信心百倍.结合实例,利用PHPExc ...

  7. .NetCore+EPPlus导出Excel报表

    .NetCore+EPPlus导出Excel报表 适用于跨平台部署 NuGet引入EPPlus.Core 定义公共调用方法 完成调用 NuGet引入EPPlus.Core 因为本人使用的框架是.Net ...

  8. asp.net简单实现导出excel报表

    关于导出excel报表,网上也是一搜一大把.整理一下,无非就是几种思路,有利用安装excel软件或插件的服务器直接生成,或者直接在客户端生成(通常都是利用excel软件或插件直接在浏览器生成).反正万 ...

  9. java导出excel报表工具类

    自己写的导出excel报表的公共方法,该公共方法主要用于非横向流动性报表导出 1.创立excel基本初始步骤 XSSFWorkbook wb = new XSSFWorkbook();XSSFCell ...

最新文章

  1. Python爬虫入门教程 33-100 《海王》评论数据抓取 scrapy
  2. Effective C++ -----条款06:若不想使用编译器自动生成的函数,就该明确拒绝
  3. 【转】Postman安装与使用
  4. php 登录重定向,PHP登录后重定向
  5. Android开发之品牌机型不同setMargins属性无效的bug
  6. 解决Hbase输入list,创建表报错,输入status可以,org.apache.hadoop.hbase.ipc.ServerNotRunningYetException: S
  7. 数论 —— 欧拉函数
  8. php中如何使用html代码
  9. 不劳烦苹果了!现在,FBI让嫌疑人抬头刷脸就能解锁iPhone
  10. 启动Virtual User Generator提示ArgumentNullException:值不能为null
  11. http://blog.csdn.net/zbyufei/article/details/6096881
  12. 强化学习中的各类算法
  13. 机器人视觉手眼标定学习笔记
  14. 谷歌和金山词霸合作 翻译行业垄断出现
  15. 宁波大学计算机网络复试真题,宁波大学计算机网络习题集
  16. H 幻方变换(puzzle)(NYIST 2019年校赛)
  17. 基于Qt的UDP传输文字聊天小软件实现
  18. buuctf misc 小易的U盘
  19. 名帖325 启功 行书《行书帖选》
  20. MacPro终端出现bash: touch: command not found

热门文章

  1. Mysql 获取当月和上个月第一天和最后一天的SQL
  2. 【docker】【Gitlab】gitlab中clone项目时,IP地址是一串数字(内网Gitlab的IP地址不正确)的问题解决...
  3. BZOJ1563:[NOI2009]诗人小G(决策单调性DP)
  4. [android] 手机卫士黑名单功能(列表展示)
  5. Oracle感慨(转)
  6. (转)让你受益终身的10个Word实用技巧
  7. legend2---开发常用语句
  8. idea设置JVM运行参数
  9. java 中文乱码问题,请注意response.getWriter的顺序
  10. Redux学习(2) ----- 异步和中间件