SXSSFWorkbook是Apache POI提供的一种用于导出大量Excel文件的解决方案,它可以有效的避免内存溢出的问题,使用它可以轻松地创建大型的Excel文件。下面我们来看看如何。
1. 导入依赖
<dependency> <groupid>org.apache.poi</groupid> poi <version>4.1.2</version> </dependency> <dependency> <groupid>org.apache.poi</groupid> poi-ooxml <version>4.1.2</version> </dependency>
2. 导入包
import org.apache.poi.xssf.streaming.SXSSFWorkbook; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet;
public class ExcelExportUtil { /** * 使用SXSSFWorkbook导出Excel文件 * @param dataList 数据集合 * @param sheetName sheet名称 * @param columnNames 列名称 * @param columnWidths 列宽度 * @return SXSSFWorkbook */ public static SXSSFWorkbook exportExcel(List<list<object> dataList, String sheetName, String[] columnNames, int[] columnWidths) { SXSSFWorkbook wb = new SXSSFWorkbook(); Sheet sheet = wb.createSheet(sheetName); //设置列宽 for (int i = 0; i < columnWidths.length; i++) { sheet.setColumnWidth(i, columnWidths[i]); } //创建标题行 Row row = sheet.createRow(0); for (int i = 0; i < columnNames.length; i++) { row.createCell(i).setCellValue(columnNames[i]); } //填充数据 for (int i = 0; i < dataList.size(); i++) { Row dataRow = sheet.createRow(i + 1); List<object> data = dataList.get(i); for (int j = 0; j < data.size(); j++) { dataRow.createCell(j).setCellValue(String.valueOf(data.get(j))); } } return wb; } }
//准备数据 List<List<Object>> dataList = new ArrayList<>(); dataList.add(Arrays.asList("张三", 20, "男")); dataList.add(Arrays.asList("李四", 21, "女")); dataList.add(Arrays.asList("王五", 22, "男")); //设置列名称和列宽度 String[] columnNames = {"姓名", "年龄", "性别"}; int[] columnWidths = {20 * 256, 10 * 256, 10 * 256}; //调用导出方法 SXSSFWorkbook wb = ExcelExportUtil.exportExcel(dataList, "用户列表", columnNames, columnWidths); //保存到文件 try (FileOutputStream out = new FileOutputStream("D:/user.xlsx")) { wb.write(out); } catch (IOException e) { e.printStackTrace(); }
上面就是,它的使用非常简单,只需要准备好数据,设置列名称和列宽度,调用导出方法,将生成的SXSSFWorkbook保存到文件即可。
本文链接:http://task.lmcjl.com/news/11697.html