使用SXSSFWorkbook导出Excel文件的简单实例和操作步骤

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

展开阅读全文