SXSSFWorkbook是Apache POI提供的一种用于导出大量Excel文件的解决方案,它可以有效的避免内存溢出的问题,使用它可以轻松地创建大型的Excel文件。下面我们来看看如何。
环境准备
1. 导入依赖
org.apache.poi poi4.1.2 org.apache.poi poi-ooxml4.1.2
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 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
调用方法
//准备数据 List> 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保存到文件即可。