org.in2bits.MyXls.XlsDocument 生成excel文件 ; 如果想读取模板再另外生成的话,试试 NPOI
优点:不依赖Microsoft组件,在内存中操作excel,读写速度快。
缺点:无法读取模板,只能生成新的excel (我亲自测试是在读取完模板后,不能保存,也不能另存,并且其他人说这个读取还会有问题,所以不推荐用这个来读取),格式不好控制, 最大不能超过 65535 行数据, 不支持 xlsx 格式的生成 (如果需要生成 大于 65535的数据,或者是 xlsx 的数据,请参考本文章结尾 )
MyXls是用C#开源项目,可以应用于asp.net 或者 .net应用程序上。它根据微软公开的Excle文档格式文件(BIFF),以二进制格式直接生成excel文档,支持Excel versions 97 - 2007。目前MyXls已经实现了单元格(cell)的格式设置,包括文本颜色、文本大小、字体、单位格边框、底色、列宽、行高,合并单元格,多个sheet页等功能,MyXls里面的索引号是从1开始。
你可以在这里找到myxls项目:http://sourceforge.net/projects/myxls/
需要注意的是,如果你想在asp.net中使用myxls,那么上面链接中的download并不适合你,因为那是针对silverlight的。你可以到这里下载asp.net版本的http://sourceforge.net/projects/myxls/files/MyXls/v0.6.3/
下载完毕后,直接在项目中引用 dll 文件即可实现下面的例子
测试例子
List<string> excelTitle = new List<string>() { "学校名称", "老师用户数", "家长用户数", "用户总数", "家长下载数", "老师下载数", "下载合计" };
XlsDocument xls = new XlsDocument();
Worksheet sheet = xls.Workbook.Worksheets.Add("统计明细"); //填充表头
for (int i = 0; i < excelTitle.Count; i++)
{
sheet.Cells.Add(1, i + 1, excelTitle[i]);
} //填充内容
for (int i = 0; i < list.Count; i++)
{
//从第二行开始填充,并且填充第二行的每一列
sheet.Cells.Add(i + 2, 1, list[i].SchoolName);
sheet.Cells.Add(i + 2, 2, list[i].TeacheruserCount);
sheet.Cells.Add(i + 2, 3, list[i].Userjiazhangcount);
sheet.Cells.Add(i + 2, 4, list[i].Count);
sheet.Cells.Add(i + 2, 5, list[i].UserphonexiazaiCount);
sheet.Cells.Add(i + 2, 6, list[i].TeacherphonexiazaiCount);
sheet.Cells.Add(i + 2, 7, list[i].PhoneCount); } //保存
xls.FileName = string.Format("成都每周一获取数据_{0}.xls", DateTime.Now.ToString("yyyy-MM-dd HH.mm.ss"));
xls.Save();
坑爹货,这玩意不支持读取模板来生成新的excel文件…
例如下面的例子,结果是失败告终
我们也可以制作一个模板(模板里面已经设置好了 表格的标头和样式),然后在代码里面打开这个模板,只添加数据即可
如果先尝试读取模板,然后另存为或者是保存的话,可以试试 NPOI 这个
FileStream file = new FileStream(Server.MapPath("template/") + "a.xls", FileMode.Open, FileAccess.Read);
HSSFWorkbook hssfworkbook = new HSSFWorkbook(file);
file.Close();
ISheet sheet1 = hssfworkbook.GetSheet("Sheet1"); if (sheet1.GetRow(23) == null)
{
sheet1.CreateRow(23);
}
if (sheet1.GetRow(23).GetCell(6) == null)
{
sheet1.GetRow(23).CreateCell(6);
} sheet1.GetRow(23).GetCell(6).SetCellValue(300); sheet1.ForceFormulaRecalculation = true;
FileStream file2 = new FileStream(Server.MapPath("template/") + "ccc.xls", FileMode.Create, FileAccess.Write);
hssfworkbook.Write(file2);
file2.Close();
如果一定要用 myxls 生成 大于 65535行的数据,一种方式是 超过这个行数,就生成第二个 sheet ,方法如下
http://www.cnblogs.com/yxhblog/archive/2012/06/07/2539894.html
或者使用 NPOI 生成 xlsx 格式的文档,就可以超过 65535行数据了
NPOI 2.1.1 系列(1) 使用NPOI读取 Excel文档 ;NpoiExcelHelper 导入导出 2003格式 2007格式的 Excel; Npoi 导出 xlsx 格式
org.in2bits.MyXls.XlsDocument 生成excel文件 ; 如果想读取模板再另外生成的话,试试 NPOI的更多相关文章
- 如何生成excel文件作为图像识别结果
如何生成excel文件作为图像识别结果 在进行大规模图像处理的时候,如果能够以表格的形式生成结果文件,将非常的直观.这个时候,选择excel作为结果输出文件,将是合适的. 查询相关资料,有很多关于ex ...
- php生成excel文件的简单方法
生成excel文件,最简单的莫过于把数据库的数据导入到excel就行了. 生成excel 当然使用的是 phpExcel http://www.jbxue.com/tags/phpexcel.html ...
- XLSTransformer生成excel文件简单演示样例
项目结构图: 项目中所用到的jar,能够到http://www.findjar.com/index.x下载 ExcelUtil类源代码: package util; import java.io.IO ...
- XLSTransformer生成excel文件
jxls的使用方法: 1)声明一个XLSTransformer对象,生成方式就是使用new操作符 XLSTransformer transformer = new XL ...
- thinkphp整合系列之phpexcel生成生成excel文件
在后台管理中会经常需要将数据生成excel表格的: php生成excel有两种方案: 一种是通过phpexcel生成xls格式的表格文件: 另一种则直接通过逗号换行生成csv格式的表格文件: 这里先讲 ...
- 实现excel导入导出功能,excel导入数据到页面中,页面数据导出生成excel文件
今天接到项目中的一个功能,要实现excel的导入,导出功能.这个看起来思路比较清楚,但是做起了就遇到了不少问题. 不过核心的问题,大家也不会遇到了.每个项目前台页面,以及数据填充方式都不一样,不过大多 ...
- springMVC(4)---生成excel文件并导出
springMVC(4)---生成excel文件并导出 在开发过程中,需要将数据库中的数据以excel表格的方式导出. 首先说明.我这里用的是Apache的POI项目,它是目前比较成熟的HSSF接口, ...
- 2018年,请不要再使用OLE生成EXCEL文件
输出EXCEL文件是ABAP开发工作中的常见需求,为了学习相关技术,我翻译过一篇文章:使用OLE2对象创建EXCEL文件,并且一度乐在其中. 最近几个月,经过与若干EXCEL打印程序的艰苦斗争,以及对 ...
- POI生成EXCEL文件
POI生成EXCEL文件 一.背景 根据指定格式的JSON文件生成对应的excel文件,需求如下 支持多sheet 支持单元格合并 支持插入图片 支持单元格样式可定制 需要 标题(title),表头( ...
随机推荐
- 【Spring】Spring Session的简单搭建与源码阅读
搭建一个简单的Spring Session例子 引入依赖包 <dependencies> <dependency> <groupId>org.springframe ...
- Mac上把python源文件编译成so文件
把python源文件编译成so文件 前言 实际上属于一种代码混淆/加密的技术,大家知道python的源文件放在那里,大家是都可以看的,不像C语言编译出来可以拿编译后的东西去运行,所以就出现了这种需求. ...
- Windows下断言的类型及实现
一.内容综述 本文主要介绍Windows下断言assert的实现,并总结断言的不同应用准则.最后给出一个windows自定义断言的方法. 本文行文参考<Debugging Windows Pro ...
- java 多线程 26 : 线程池
使用线程池与不使用线程池的差别 先来看一下使用线程池与不适应线程池的差别,第一段代码是使用线程池的: public static void main(String[] args) { long sta ...
- java中日期的换算处理
JAVA8中的日期API是JSR-310的实现,并且是工作在ISO-8601日历系统基础上的,但我们也可以在非ISO的日历上.JDK8的日期API大致分为以下几个包: java.time包:JDK8中 ...
- 7. 集成学习(Ensemble Learning)Stacking
1. 集成学习(Ensemble Learning)原理 2. 集成学习(Ensemble Learning)Bagging 3. 集成学习(Ensemble Learning)随机森林(Random ...
- phalcon无法更新分区字段解决办法
表里面有个分区字段,更新后,保存成功,结果实际上数据库没有更新. 后来使用原生sql,解决了这个问题. 获取di中的数据库连接,直接执行sql语句即可,下面的db为注册的数据库服务名 $db = $t ...
- Nosql相关产品和分布式相关中间件
1.memcached 2.redis 3.mongodb 4.消息队列的运用
- RabbitMQ安装 ubuntu12.04LTS
RabbitMQ安装需要安装较多的依赖包,之前如果安装过RabbitMQ-server必须要先彻底删除. 重装的ubuntu系统(ubuntu server)的开发环境几乎是裸的,再重新编译安装erl ...
- 全国地区的省份、城市、区县 最新Sql脚本
IF (EXISTS(SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[TB_Province]') AND type =' ...