import org.apache.commons.io.IOUtils;
import java.io.File;
import java.io.FileOutputStream;
public String exportRecord(Record record) throws Exception {
List<Record> list = selList(record);
if (list.size() == 0 && StringUtils.isNotEmpty(record.getPersonName())) {
record.setPersonCode(record.getPersonName());
record.setPersonName("");
list = selList(record);
}
if (list != null) {
if (list.size() > 0) {
ExportExcel exportExcel = new ExportExcel(null, "记录信息", RecordExcel.class);
exportExcel.setDataList(list);
FileOutputStream fo = null;
String excelFileName = "record-" + System.currentTimeMillis(); + "-" + (new Date().getTime()) + ".xlsx";
String excelFilePath = "/file_server/excel" + "/" + excelFileName;
try {
File file = new File("/file_server/excel");
if (!file.exists()) {
file.mkdirs();
}
fo = new FileOutputStream("D:/data" + excelFilePath);
exportExcel.write(fo);
return "http://127.0.0.1:8080" + excelFilePath;
} catch (IOException e) {
e.printStackTrace();
} finally {
IOUtils.closeQuietly(fo);
}
}
}
return null;
}
需要导出的表格模板 RecordExcel.java
/**
* 记录表格模板
*/
public class RecordExcel {
@ExcelField(title = "姓名")
private String personName;
@ExcelField(title = "编号")
private String personCode;
@ExcelField(title = "部门")
private String deptName;
@ExcelField(title = "时间")
private String snapTime;
public void setPersonName(String personName) {
this.personName = personName;
}
public void setPersonCode(String personCode) {
this.personCode = personCode;
}
public void setDeptName(String deptName) {
this.deptName = deptName;
}
public void setSnapTime(String snapTime) {
this.snapTime = snapTime;
}
public String getPersonName() {
return personName;
}
public String getPersonCode() {
return personCode;
}
public String getDeptName() {
return deptName;
}
public String getSnapTime() {
return snapTime;
}
}
以下属于工具类(可直接复制):
ExportExcel.java
import com.google.common.collect.Lists;
import com.core.common.utils.Reflections;
import org.apache.commons.lang.StringUtils;
import org.apache.poi.common.usermodel.HyperlinkType;
import org.apache.poi.ss.usermodel.BorderStyle;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.Comment;
import org.apache.poi.ss.usermodel.FillPatternType;
import org.apache.poi.ss.usermodel.Font;
import org.apache.poi.ss.usermodel.HorizontalAlignment;
import org.apache.poi.ss.usermodel.Hyperlink;
import org.apache.poi.ss.usermodel.IndexedColors;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.VerticalAlignment;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
import org.apache.poi.xssf.usermodel.XSSFClientAnchor;
import org.apache.poi.xssf.usermodel.XSSFRichTextString;
import java.io.IOException;
import java.io.OutputStream;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 导出Excel文件(导出“XLSX”格式,支持大数据量导出 @see org.apache.poi.ss.SpreadsheetVersion)
*/
public class ExportExcel {
/**
* 单页最大的行数
*/
private static final int MAX_ROW_NUM = 11000;
/**
* 工作薄对象
*/
privat