All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.github.shaohj.sstool.poiexpand.sax07.Sax07ExcelUtil Maven / Gradle / Ivy

package com.github.shaohj.sstool.poiexpand.sax07;

import com.github.shaohj.sstool.poiexpand.common.bean.read.ReadSheetData;
import com.github.shaohj.sstool.poiexpand.common.bean.write.WriteSheetData;
import com.github.shaohj.sstool.poiexpand.common.util.write.SaxWriteUtil;
import com.github.shaohj.sstool.poiexpand.sax07.template.Sax07ExcelTemplateReader;
import com.github.shaohj.sstool.poiexpand.sax07.template.Sax07ExcelTemplateWriter;
import lombok.extern.slf4j.Slf4j;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

/**
 * 编  号:
 * 名  称:Sax07ExcelUtil
 * 描  述:
 * 完成日期:2019/6/29 11:12
 * @author:felix.shao
 */
@Slf4j
public class Sax07ExcelUtil {

    /**
     * 根据excel2007模板导出excel
     * @param param 导出参数
     */
    public static void export(Sax07ExcelExportParam param) {
        Sax07ExcelExportParam.valid(param);
        if (null == param.getSax07ExcelPageWriteServices()){
            param.setSax07ExcelPageWriteServices(new ArrayList<>(0));
        }

        // 打开工作簿 并进行初始化
        XSSFWorkbook readWb = Sax07ExcelTemplateReader.openWorkbook(true, param.getTempFileName());

        // 读取模板工作簿内容
        List readReadSheetData = Sax07ExcelTemplateReader.readSheetData(readWb);

        // 写入模板内容
        List writeSheetDatas = SaxWriteUtil.parseSheetData(readReadSheetData);

        //创建缓存的输出文件工作簿
        int rowAccessWindowSize = 0 == param.getRowAccessWindowSize() ? 1000 : param.getRowAccessWindowSize();
        SXSSFWorkbook writeWb = new SXSSFWorkbook(rowAccessWindowSize);

        try {
            Sax07ExcelTemplateWriter.writeSheetData(writeWb, param.getParams(), writeSheetDatas, param.getSax07ExcelPageWriteServices());
            //输出文件
            writeWb.write(param.getOutputStream());
        } catch (IOException e) {
            log.info("导出excel时错误", e);
        } finally {
            //清理导出的临时缓存文件
            writeWb.dispose();
        }

    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy