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

com.y3tu.tool.poi.excel.BigExcelWriter Maven / Gradle / Ivy

package com.y3tu.tool.poi.excel;

import java.io.File;
import java.io.OutputStream;

import com.y3tu.tool.core.io.FileUtil;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;


/**
 * 大数据量Excel写出
 *
 * @author looly
 */
public class BigExcelWriter extends ExcelWriter {

    public static final int DEFAULT_WINDOW_SIZE = SXSSFWorkbook.DEFAULT_WINDOW_SIZE;

    // -------------------------------------------------------------------------- Constructor start

    /**
     * 构造,默认生成xls格式的Excel文件
* 此构造不传入写出的Excel文件路径,只能调用{@link #flush(OutputStream)}方法写出到流
* 若写出到文件,还需调用{@link #setDestFile(File)}方法自定义写出的文件,然后调用{@link #flush()}方法写出到文件 */ public BigExcelWriter() { this(DEFAULT_WINDOW_SIZE); } /** * 构造
* 此构造不传入写出的Excel文件路径,只能调用{@link #flush(OutputStream)}方法写出到流
* 若写出到文件,需要调用{@link #flush(File)} 写出到文件 * * @param rowAccessWindowSize 在内存中的行数 */ public BigExcelWriter(int rowAccessWindowSize) { this(WorkbookUtil.createSXSSFBook(rowAccessWindowSize), null); } /** * 构造,默认写出到第一个sheet,第一个sheet名为sheet1 * * @param destFilePath 目标文件路径,可以不存在 */ public BigExcelWriter(String destFilePath) { this(destFilePath, null); } /** * 构造
* 此构造不传入写出的Excel文件路径,只能调用{@link #flush(OutputStream)}方法写出到流
* 若写出到文件,需要调用{@link #flush(File)} 写出到文件 * * @param rowAccessWindowSize 在内存中的行数 * @param sheetName sheet名,第一个sheet名并写出到此sheet,例如sheet1 * \ */ public BigExcelWriter(int rowAccessWindowSize, String sheetName) { this(WorkbookUtil.createSXSSFBook(rowAccessWindowSize), sheetName); } /** * 构造 * * @param destFilePath 目标文件路径,可以不存在 * @param sheetName sheet名,第一个sheet名并写出到此sheet,例如sheet1 */ public BigExcelWriter(String destFilePath, String sheetName) { this(FileUtil.file(destFilePath), sheetName); } /** * 构造,默认写出到第一个sheet,第一个sheet名为sheet1 * * @param destFile 目标文件,可以不存在 */ public BigExcelWriter(File destFile) { this(destFile, null); } /** * 构造 * * @param destFile 目标文件,可以不存在 * @param sheetName sheet名,做为第一个sheet名并写出到此sheet,例如sheet1 */ public BigExcelWriter(File destFile, String sheetName) { this(destFile.exists() ? WorkbookUtil.createSXSSFBook(destFile) : WorkbookUtil.createSXSSFBook(), sheetName); this.destFile = destFile; } /** * 构造
* 此构造不传入写出的Excel文件路径,只能调用{@link #flush(OutputStream)}方法写出到流
* 若写出到文件,还需调用{@link #setDestFile(File)}方法自定义写出的文件,然后调用{@link #flush()}方法写出到文件 * * @param workbook {@link SXSSFWorkbook} * @param sheetName sheet名,做为第一个sheet名并写出到此sheet,例如sheet1 */ public BigExcelWriter(SXSSFWorkbook workbook, String sheetName) { this(ExcelUtil.getOrCreateSheet(workbook, sheetName)); } /** * 构造
* 此构造不传入写出的Excel文件路径,只能调用{@link #flush(OutputStream)}方法写出到流
* 若写出到文件,还需调用{@link #setDestFile(File)}方法自定义写出的文件,然后调用{@link #flush()}方法写出到文件 * * @param sheet {@link Sheet} */ public BigExcelWriter(Sheet sheet) { super(sheet); } // -------------------------------------------------------------------------- Constructor end @Override public void close() { if (null != this.destFile) { flush(); } ((SXSSFWorkbook) this.workbook).dispose(); super.closeWithoutFlush(); } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy