poi导出excel
依赖
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.15</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml-schemas</artifactId>
<version>3.15</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.15</version>
</dependency>
public class poi {
/**
* 生成Excel
*/
public static void zxExprotExcelXLSX(String path ,String hand, String[] title, List<?> list) throws Exception {
XSSFWorkbook wb = new XSSFWorkbook();
Sheet sheet = wb.createSheet("0");
//设置列宽
for (int i = 0; i < 5; i++) {
sheet.setColumnWidth(i, 3300);
}
/**
* 单元格 样式
*/
CellStyle cellStyle = wb.createCellStyle();
cellStyle.setBorderTop(BorderStyle.THIN);
cellStyle.setBorderBottom(BorderStyle.THIN);
cellStyle.setBorderLeft(BorderStyle.THIN);
cellStyle.setBorderRight(BorderStyle.THIN);
cellStyle.setTopBorderColor(HSSFColor.BLACK.index);
cellStyle.setBottomBorderColor(HSSFColor.BLACK.index);
cellStyle.setLeftBorderColor(HSSFColor.BLACK.index);
cellStyle.setRightBorderColor(HSSFColor.BLACK.index);
cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 水平居中
cellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER); // 上下居中
/**
* 标题样式 样式
*/
XSSFFont titleFont = wb.createFont();
titleFont.setFontHeight(24);
titleFont.setBold(true);
CellStyle titleCellStyle = wb.createCellStyle();
titleCellStyle.setBorderTop(BorderStyle.THIN);
titleCellStyle.setBorderBottom(BorderStyle.THIN);
titleCellStyle.setBorderLeft(BorderStyle.THIN);
titleCellStyle.setBorderRight(BorderStyle.THIN);
titleCellStyle.setTopBorderColor(HSSFColor.BLACK.index);
titleCellStyle.setBottomBorderColor(HSSFColor.BLACK.index);
titleCellStyle.setLeftBorderColor(HSSFColor.BLACK.index);
titleCellStyle.setRightBorderColor(HSSFColor.BLACK.index);
titleCellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 水平居中
titleCellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER); // 上下居中
titleCellStyle.setFont(titleFont);
/**
* 主 标题 在这里插入主标题
*/
Row titleRow;
Cell titleCell;
sheet.addMergedRegion(new CellRangeAddress((short) 0, (short) 2, (short) 0, (short) 8));
for (int i = 0; i <= 2; i++) {
titleRow = sheet.createRow(i);
for (int j = 0; j < 5; j++) {
titleCell = titleRow.createCell(j);
titleCell.setCellType(CellType.STRING);
titleCell.setCellStyle(titleCellStyle);
titleCell.setCellValue(hand);
}
}
/**
* 列 标题 在这里插入标题
*/
Row rowLabel;
Cell cellLabel;
for (int i = 3; i < 4; i++) {
rowLabel = sheet.createRow(i);
for (int j = 0; j < title.length; j++) {
cellLabel = rowLabel.createCell(j);
cellLabel.setCellType(CellType.STRING);
cellLabel.setCellStyle(cellStyle);
cellLabel.setCellValue(title[j]);
}
}
/**
* 列 数据 在这里插入数据
*/
for(int y=0;y<list.size();y++) {
Row rows = sheet.createRow(y + 4);
Object dto = list.get(y);
Class clazz = dto.getClass();
Field[] fileds = clazz.getDeclaredFields();
for (int i = 0; i < fileds.length; i++) {
char c = fileds[i].getName().charAt(0);
c -= 32;
String mname = c + fileds[i].getName().substring(1);
Method method = clazz.getMethod("get" + mname);
Object obj = method.invoke(dto, null);
if (obj != null) {
if (fileds[i].getType() == Date.class) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
obj = sdf.format(obj);
}
} else {
obj = "";
}
rows.createCell((short) i).setCellValue(obj.toString());
}
}
/**
* 根据表id设置页脚名
*/
wb.setSheetName( 0,"页脚");
/**
* 进行导出
*/
try {
File file = new File(path);
FileOutputStream fileOutputStream = new FileOutputStream(file);
wb.write(fileOutputStream);
fileOutputStream.close();
} catch (IOException e) {
System.err.println(e.getMessage());
}
}
}