@GetMapping(" /")
@ResponseBody
@RequiresPermissions("/")
public void export(QueryRequest queryRequest, CsCommonrule csCommonrule, HttpServletResponse response) throws BusException {
try {
List<CsCommonrule> csCommonrules = this.csCommonruleService.findCsCommonrules(queryRequest, csCommonrule).getRecords();
ExcelKit.$Export(CsCommonrule.class, response).downXlsx(csCommonrules, false);
} catch (Exception e) {
String message = "導出Excel失敗";
log.error(message, e);
throw new BusException(message);
}
}
如上先查詢資料存到list集合然後列印
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by Fernflower decompiler)
//
package com.wuwenze.poi;
import com.wuwenze.poi.exception.ExcelKitRuntimeException;
import com.wuwenze.poi.factory.ExcelMappingFactory;
import com.wuwenze.poi.handler.ExcelReadHandler;
import com.wuwenze.poi.pojo.ExcelMapping;
import com.wuwenze.poi.util.POIUtil;
import com.wuwenze.poi.xlsx.ExcelXlsxReader;
import com.wuwenze.poi.xlsx.ExcelXlsxWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URLEncoder;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
public class ExcelKit {
private Class<?> mClass;
private HttpServletResponse mResponse;
private OutputStream mOutputStream;
private Integer mMaxSheetRecords;
private String mCurrentOptionMode;
private static final String MODE_EXPORT = "$MODE_EXPORT$";
private static final String MODE_BUILD = "$MODE_BUILD$";
private static final String MODE_IMPORT = "$MODE_IMPORT$";
public static ExcelKit $Export(Class<?> clazz, HttpServletResponse response) {
return new ExcelKit(clazz, response);
}
public void downXlsx(List<?> data, boolean isTemplate) {
if (!this.mCurrentOptionMode.equals("$MODE_EXPORT$")) {
throw new ExcelKitRuntimeException("請使用com.wuwenze.poi.ExcelKit.$Export(Class<?> clazz, HttpServletResponse response)構造器初始化參數.");
} else {
try {
ExcelMapping excelMapping = ExcelMappingFactory.get(this.mClass);
ExcelXlsxWriter excelXlsxWriter = new ExcelXlsxWriter(excelMapping, this.mMaxSheetRecords);
SXSSFWorkbook workbook = excelXlsxWriter.generateXlsxWorkbook(data, isTemplate);
String fileName = isTemplate ? excelMapping.getName() + "-導入模闆.xlsx" : excelMapping.getName() + "-導出結果.xlsx";
POIUtil.download(workbook, this.mResponse, URLEncoder.encode(fileName, "UTF-8"));
} catch (Throwable var7) {
throw new ExcelKitRuntimeException("downXlsx error", var7);
}
}
}
public static ExcelKit $Builder(Class<?> clazz, OutputStream outputStream) {
return new ExcelKit(clazz, outputStream);
}
public void writeXlsx(List<?> data, boolean isTemplate) {
if (!this.mCurrentOptionMode.equals("$MODE_BUILD$")) {
throw new ExcelKitRuntimeException("請使用com.wuwenze.poi.ExcelKit.$Builder(Class<?> clazz, OutputStream outputStream)構造器初始化參數.");
} else {
ExcelMapping excelMapping = ExcelMappingFactory.get(this.mClass);
ExcelXlsxWriter excelXlsxWriter = new ExcelXlsxWriter(excelMapping, this.mMaxSheetRecords);
SXSSFWorkbook workbook = excelXlsxWriter.generateXlsxWorkbook(data, isTemplate);
POIUtil.write(workbook, this.mOutputStream);
}
}
public static ExcelKit $Import(Class<?> clazz) {
return new ExcelKit(clazz);
}
public void readXlsx(File excelFile, ExcelReadHandler<?> excelReadHandler) {
this.readXlsx(excelFile, -1, excelReadHandler);
}
public void readXlsx(File excelFile, Integer sheetIndex, ExcelReadHandler<?> excelReadHandler) {
try {
InputStream inputStream = new FileInputStream(excelFile);
this.readXlsx((InputStream)inputStream, sheetIndex, excelReadHandler);
} catch (Throwable var5) {
throw new ExcelKitRuntimeException("readXlsx error", var5);
}
}
public void readXlsx(InputStream inputStream, ExcelReadHandler<?> excelReadHandler) {
this.readXlsx(inputStream, -1, excelReadHandler);
}
public void readXlsx(InputStream inputStream, Integer sheetIndex, ExcelReadHandler<?> excelReadHandler) {
if (!this.mCurrentOptionMode.equals("$MODE_IMPORT$")) {
throw new ExcelKitRuntimeException("請使用com.wuwenze.poi.ExcelKit.$Import(Class<?> clazz)構造器初始化參數.");
} else {
ExcelMapping excelMapping = ExcelMappingFactory.get(this.mClass);
ExcelXlsxReader excelXlsxReader = new ExcelXlsxReader(this.mClass, excelMapping, excelReadHandler);
if (sheetIndex >= 0) {
excelXlsxReader.process(inputStream, sheetIndex);
} else {
excelXlsxReader.process(inputStream);
}
}
}
public ExcelKit setMaxSheetRecords(Integer mMaxSheetRecords) {
this.mMaxSheetRecords = mMaxSheetRecords;
return this;
}
protected ExcelKit(Class<?> clazz) {
this(clazz, (OutputStream)null, (HttpServletResponse)null);
this.mCurrentOptionMode = "$MODE_IMPORT$";
}
protected ExcelKit(Class<?> clazz, OutputStream outputStream) {
this(clazz, outputStream, (HttpServletResponse)null);
this.mCurrentOptionMode = "$MODE_BUILD$";
}
protected ExcelKit(Class<?> clazz, HttpServletResponse response) {
this(clazz, (OutputStream)null, response);
this.mCurrentOptionMode = "$MODE_EXPORT$";
}
protected ExcelKit(Class<?> clazz, OutputStream outputStream, HttpServletResponse response) {
this.mClass = null;
this.mResponse = null;
this.mOutputStream = null;
this.mMaxSheetRecords = 50000;
this.mCurrentOptionMode = "$MODE_EXPORT$";
this.mClass = clazz;
this.mOutputStream = outputStream;
this.mResponse = response;
}
protected ExcelKit() {
this.mClass = null;
this.mResponse = null;
this.mOutputStream = null;
this.mMaxSheetRecords = 50000;
this.mCurrentOptionMode = "$MODE_EXPORT$";
}
}
導出ecxel的工具類