当前项目中使用最多的几乎是下面的工具生成Excel:
HSSFWorkbook:一般用于操作Excel2003以前(包括2003)的版本,扩展名是.xls。
XSSFWorkbook:一般用于操作Excel2007及以上的版本,扩展名是.xlsx
SXSSFWorkbook(POI 3.8+版本):一般用于大数据量的导出。
第一种:HSSFWorkbook
针对EXCEL2003版本,扩展名为.xls,此种的局限就是导出的行数最多为65535行、256列。一般不会出现内存溢出(OOM)的情况
第二种:XSSFWorkbook
针对EXCEL2007+,扩展名为.xlsx ,最多可以导出1048576行,16384列,不过这样就伴随着一个问题–OOM内存溢出。
第三种:SXSSFWorkbook
SXSSFWorkbook可以根据行数将内存中的数据持久化写到文件中,以此逐步写入,避免OOM。
针对于现在项目需求,采用了MiniExcel进行Excel的导出
- 先添加MiniExcel的引用

2.查询数据并调用MiniExcel生成文件
public class ExcelConstants
{
// 一个sheet装100w数据
public const int PerSheetRowCount = 1000000;
// 每次查询20w数据,每次写入20w数据
public const int PerWriteRowCount = 200000;
}
public class ExportModel
{
/*
引用MiniExcel 在生成Excel时会自动引用这里的描述作为列头
*/
[ExcelColumnName("导出列1")]
public string Column1{
get; set; }
[ExcelColumnName("导出列2")]
public string Column2{
get; set; }
[ExcelColumnName("导出列3")]
public string Column3{
get; set

本文介绍了在项目中使用HSSFWorkbook、XSSFWorkbook和SXSSFWorkbook处理Excel数据的优缺点,特别提到了MiniExcel在大数据量Excel导出中的应用,以及如何通过分批写入和缓存管理来避免内存溢出问题。
最低0.47元/天 解锁文章
7375

被折叠的 条评论
为什么被折叠?



