优点:不依赖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的更多相关文章

  1. 如何生成excel文件作为图像识别结果

    如何生成excel文件作为图像识别结果 在进行大规模图像处理的时候,如果能够以表格的形式生成结果文件,将非常的直观.这个时候,选择excel作为结果输出文件,将是合适的. 查询相关资料,有很多关于ex ...

  2. php生成excel文件的简单方法

    生成excel文件,最简单的莫过于把数据库的数据导入到excel就行了. 生成excel 当然使用的是 phpExcel http://www.jbxue.com/tags/phpexcel.html ...

  3. XLSTransformer生成excel文件简单演示样例

    项目结构图: 项目中所用到的jar,能够到http://www.findjar.com/index.x下载 ExcelUtil类源代码: package util; import java.io.IO ...

  4. XLSTransformer生成excel文件

    jxls的使用方法: 1)声明一个XLSTransformer对象,生成方式就是使用new操作符                 XLSTransformer transformer = new XL ...

  5. thinkphp整合系列之phpexcel生成生成excel文件

    在后台管理中会经常需要将数据生成excel表格的: php生成excel有两种方案: 一种是通过phpexcel生成xls格式的表格文件: 另一种则直接通过逗号换行生成csv格式的表格文件: 这里先讲 ...

  6. 实现excel导入导出功能,excel导入数据到页面中,页面数据导出生成excel文件

    今天接到项目中的一个功能,要实现excel的导入,导出功能.这个看起来思路比较清楚,但是做起了就遇到了不少问题. 不过核心的问题,大家也不会遇到了.每个项目前台页面,以及数据填充方式都不一样,不过大多 ...

  7. springMVC(4)---生成excel文件并导出

    springMVC(4)---生成excel文件并导出 在开发过程中,需要将数据库中的数据以excel表格的方式导出. 首先说明.我这里用的是Apache的POI项目,它是目前比较成熟的HSSF接口, ...

  8. 2018年,请不要再使用OLE生成EXCEL文件

    输出EXCEL文件是ABAP开发工作中的常见需求,为了学习相关技术,我翻译过一篇文章:使用OLE2对象创建EXCEL文件,并且一度乐在其中. 最近几个月,经过与若干EXCEL打印程序的艰苦斗争,以及对 ...

  9. POI生成EXCEL文件

    POI生成EXCEL文件 一.背景 根据指定格式的JSON文件生成对应的excel文件,需求如下 支持多sheet 支持单元格合并 支持插入图片 支持单元格样式可定制 需要 标题(title),表头( ...

随机推荐

  1. 将map中的查询参数拼装到URL路径中

    被调接口的URL路径: //被调接口url String apiUrl = "http://api.open.xxxxxx.com/implatform/interview/send?acc ...

  2. java 多线程 19: ReentrantLock 与 Condition

    ReentrantLock ReentrantLock,一个可重入的互斥锁,它具有与使用synchronized方法和语句所访问的隐式监视器锁相同的一些基本行为和语义,但功能更强大. Reentran ...

  3. 通用后台管理系统(ExtJS 4.2 + Spring MVC 3.2 + Hibernate)

    通用后台管理系统(ExtJS 4.2 +Spring MVC 3.2 + Hibernate) 开发语言JAVA 成品成品 前端技术extjs 数据库mysql,sql server,oracle 系 ...

  4. 查询Oracle性能差的、正在执行或执行过的SQL语句

    查找前十条性能差的sql. SELECT * FROM (select PARSING_USER_ID,EXECUTIONS,SORTS, COMMAND_TYPE,DISK_READS,sql_te ...

  5. 1. EM算法-数学基础

    1. EM算法-数学基础 2. EM算法-原理详解 3. EM算法-高斯混合模型GMM 4. EM算法-高斯混合模型GMM详细代码实现 5. EM算法-高斯混合模型GMM+Lasso 1. 凸函数 通 ...

  6. Oracle 执行报错表空间或临时表空间不足,降低水位线方法

    Oracle 执行语句插入临时表报表空间不足,在增加表空间到最大后依然报错,经分析应该为创建的临时表水位线未清除导致,查询降低水位线方法如下: 原文地址:http://blog.itpub.net/2 ...

  7. Thinkphp CURD中的where方法

    今天来给大家讲下查询最常用但也是最复杂的where方法,where方法也属于模型类的连贯操作方法之一,主要用于查询和操作条件的设置.where方法的用法是ThinkPHP查询语言的精髓,也是Think ...

  8. Java输出字符串格式问题 .UnknownFormatConversionException

    今天遇到一个问题,使用JSoup挖掘出的数据一直出错 Exception in thread "main" java.util.UnknownFormatConversionExc ...

  9. <黑天鹅>读书笔记

    书在这里 不要关注可能性,而要关注结果 不要迷信那些估值和行业发展研究文字,因为所有大家看得到的模型和研究报告都是有关白天鹅的,而你的命运或许实际掌握在黑天鹅那里 你不知道的事比你知道的事有意义 你可 ...

  10. WCF安全:通过 扩展实现用户名密码认证

    在webSservice时代,可以通过SOAPHEADER的方式很容易将用户名.密码附加到SOAP header消息头上,用户客户端对调用客户端身份的验证.在WCF 时代,也可以通过Operation ...