org.in2bits.MyXls.XlsDocument 生成excel文件 ; 如果想读取模板再另外生成的话,试试 NPOI
2014-05-27 17:59
387 查看
优点:不依赖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 文件即可实现下面的例子
测试例子
坑爹货,这玩意不支持读取模板来生成新的excel文件…
例如下面的例子,结果是失败告终
我们也可以制作一个模板(模板里面已经设置好了 表格的标头和样式),然后在代码里面打开这个模板,只添加数据即可
如果先尝试读取模板,然后另存为或者是保存的话,可以试试 NPOI 这个
如果一定要用 myxls 生成 大于 65535行的数据,一种方式是 超过这个行数,就生成第二个 sheet ,方法如下
/article/5754234.html
或者使用 NPOI 生成 xlsx 格式的文档,就可以超过 65535行数据了
NPOI 2.1.1 系列(1) 使用NPOI读取 Excel文档 ;NpoiExcelHelper 导入导出 2003格式 2007格式的 Excel; Npoi 导出 xlsx 格式
缺点:无法读取模板,只能生成新的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 ,方法如下
/article/5754234.html
或者使用 NPOI 生成 xlsx 格式的文档,就可以超过 65535行数据了
NPOI 2.1.1 系列(1) 使用NPOI读取 Excel文档 ;NpoiExcelHelper 导入导出 2003格式 2007格式的 Excel; Npoi 导出 xlsx 格式
相关文章推荐
- NPOI根据Excel模板生成原生的Excel文件实例
- NPOI 1.2教程 – 3.1 基于.xls模板生成Excel文件
- 工作总结 1 sql写法 insert into select from 2 vs中 obj文件和bin文件 3 npoi 模板copy CopySheet 最好先全部Copy完后 再根据生成sheet写数据 4 sheet.CopyRow(rowsindex, rowsindex + x); 5 npoi 复制模板如果出现单元格显示问题
- NPOI根据Excel模板生成原生的Excel文件实例
- NPOI 菜鸟实践行之根据指定的模板生成Excel 2003格式的文件 (一)
- poi 读取Excel文件模板生成报表文件
- NPOI根据Excel模板生成原生的Excel文件实例
- ASP.NET中上传并读取Excel文件数据,附后生成EXCEL及杀掉EXCEL进程
- 生成/读取(反向更新数据库) Excel文件(示例代码下载)
- 生成/读取(反向更新数据库) Excel文件(示例代码下载)
- Java操作Excel之理解JXL--读取Excel模板动态写入数据并生成Excel
- asp.net中利用XML描述文件和Excel模板相结合的方法生成Excel报表
- 使用EXCEL模板文件(.xls)來進行數據汇出并生成EXCEL文件的代碼
- ASP.NET中上传并读取Excel文件数据,附后生成EXCEL及杀掉EXCEL进程。
- 读取Excel 将每条记录单独生成自定义格式的PDF文件
- 从JAVA直接读取EXCEL、WORD并生成PDF文件
- 使用PHPExcel生成和读取Excel文件
- 不用生成临时文件的导出Excel(没有导出模板)
- 生成/读取(反向更新数据库) Excel文件(示例代码下载)
- ASP.NET中上传并读取Excel文件数据,附后生成EXCEL及杀掉EXCEL进程。