Myxls导出excel报表
最近项目中有一个导出excel报表的需求。大体就是将一个datatable中的数据导出到excel供用户下载。开始也想过几种方法:
1.因为报表已经在页面上展现出来了,所以想能不能使用js直接将页面的table给保存到excel中,如果真能实现那还真讨巧了。但是查了一下使用js好像都必须用到activex组件,也就限制了只能在IE下使用。否决。
2.为了兼容大多数的浏览器貌似只能将生成工作放在服务器端了。两个问题。一,如何生成。二,生成了以后如何给用户。
对于第一个问题,我刚开始想直接写字符串,中间使用\t分隔。虽然这样也能生成“伪excel”(暂时这么叫吧)不过效果却不好。不能控制单元格的样式以及合并。也有一种方法是使用微软的office组件,不过这要求你在服务器上安装了office,而且据说使用这种方法在进程释放方面有问题。
对于第二个问题,有人是直接在服务器端生成后将连接发送给用户给用户下载。有人是直接给response设置头信息,让浏览器直接返回下载。显然第二种方法要好得多。
总之想要既简单又很好的到处excel也不是那么简单的一回事。不过嘛……有了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下载窗口供用户下载了。输出的截图如下:
http://dl.dbank.com/c0b5au1uuz
转载于:https://www.cnblogs.com/qianlifeng/archive/2011/08/21/2147873.html
Myxls导出excel报表相关推荐
- VS中用Myxls生成Excel报表
本文详细叙述一下如何在VS中导出Excel报表,不足之处,还望见谅.Excel报表的导出有两种方式,一种是使用自身电脑预装的office的Excel组件:另一种是是用Myxls.这里介绍Myxls,m ...
- Atitit.导出excel报表的设计与实现java .net php 总
Atitit.导出excel报表的设计与实现java .net php 总结 1. 导出报表 表格的设计要素1 1.1. 支持通用list<Map>转换1 1.2. 对于空列是否输出1 1 ...
- Java程序员从笨鸟到菜鸟之(一百零四)java操作office和pdf文件(二)利用POI实现数据导出excel报表...
在上一篇博客中,我们简单介绍了java读取word,excel和pdf文档内容 ,但在实际开发中,我们用到最多的是把数据库中数据导出excel报表形式.不仅仅简单的读取office中的数据.尤其是在生 ...
- Acey.ExcelX实例演练(1)—从GridView中导出Excel报表
Acey.ExcelX实例演练(1) -从GridView中导出Excel报表 关键词:GridView,数据绑定,Excel报表 在开发过程中我们经常遇到需要将页面中查看到的数据导出Excel的情况 ...
- java报表的导出excel_java导出excel报表
1.java导出excel报表: package cn.jcenterhome.util; import java.io.OutputStream; import java.util.List; im ...
- php导出excel报表
php导出excel报表方式网上有很多种,有的方法已经过时,有的看不懂,运行有错误,所以找资料时难免苦恼.在这里给大家分享一个简单易用的方法,致力于让大家一看就会,信心百倍.结合实例,利用PHPExc ...
- .NetCore+EPPlus导出Excel报表
.NetCore+EPPlus导出Excel报表 适用于跨平台部署 NuGet引入EPPlus.Core 定义公共调用方法 完成调用 NuGet引入EPPlus.Core 因为本人使用的框架是.Net ...
- asp.net简单实现导出excel报表
关于导出excel报表,网上也是一搜一大把.整理一下,无非就是几种思路,有利用安装excel软件或插件的服务器直接生成,或者直接在客户端生成(通常都是利用excel软件或插件直接在浏览器生成).反正万 ...
- java导出excel报表工具类
自己写的导出excel报表的公共方法,该公共方法主要用于非横向流动性报表导出 1.创立excel基本初始步骤 XSSFWorkbook wb = new XSSFWorkbook();XSSFCell ...
最新文章
- Python爬虫入门教程 33-100 《海王》评论数据抓取 scrapy
- Effective C++ -----条款06:若不想使用编译器自动生成的函数,就该明确拒绝
- 【转】Postman安装与使用
- php 登录重定向,PHP登录后重定向
- Android开发之品牌机型不同setMargins属性无效的bug
- 解决Hbase输入list,创建表报错,输入status可以,org.apache.hadoop.hbase.ipc.ServerNotRunningYetException: S
- 数论 —— 欧拉函数
- php中如何使用html代码
- 不劳烦苹果了!现在,FBI让嫌疑人抬头刷脸就能解锁iPhone
- 启动Virtual User Generator提示ArgumentNullException:值不能为null
- http://blog.csdn.net/zbyufei/article/details/6096881
- 强化学习中的各类算法
- 机器人视觉手眼标定学习笔记
- 谷歌和金山词霸合作 翻译行业垄断出现
- 宁波大学计算机网络复试真题,宁波大学计算机网络习题集
- H 幻方变换(puzzle)(NYIST 2019年校赛)
- 基于Qt的UDP传输文字聊天小软件实现
- buuctf misc 小易的U盘
- 名帖325 启功 行书《行书帖选》
- MacPro终端出现bash: touch: command not found
热门文章
- Mysql 获取当月和上个月第一天和最后一天的SQL
- 【docker】【Gitlab】gitlab中clone项目时,IP地址是一串数字(内网Gitlab的IP地址不正确)的问题解决...
- BZOJ1563:[NOI2009]诗人小G(决策单调性DP)
- [android] 手机卫士黑名单功能(列表展示)
- Oracle感慨(转)
- (转)让你受益终身的10个Word实用技巧
- legend2---开发常用语句
- idea设置JVM运行参数
- java 中文乱码问题,请注意response.getWriter的顺序
- Redux学习(2) ----- 异步和中间件