import org.apache.commons.lang3.StringUtils;
import org.apache.poi.hssf.usermodel.*;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.streaming.SXSSFCell;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.web.servlet.view.document.AbstractXlsxStreamingView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Calendar;
import java.util.List;
import java.util.Map;
/**
* 导出Excel窗口
*/
public class ObjectExcelView extends AbstractXlsxStreamingView {
@Override
protected void buildExcelDocument(Map<String, Object> model,
Workbook workbook,
HttpServletRequest request,
HttpServletResponse response) throws Exception {
String fileName = (String) model.get("fileName");
String sheetName = (String) model.get("sheetName");
List<String> titles = (List<String>) model.get("titles");
List<Map<String, String>> varList = (List<Map<String, String>>) model.get("varList");
if (StringUtils.isBlank(fileName)) {
fileName = DateUtils.getDate("yyyyMMddHHmmss");
}
if (StringUtils.isBlank(sheetName)) {
sheetName = "sheet1";
}
response.setContentType("application/octet-stream");
response.setHeader("Content-Disposition", "attachment;filename=" + fileName + ".xls");
Sheet sheet;
Row row;
Cell cell;
SXSSFWorkbook sxssfWB = (SXSSFWorkbook) workbook;
sheet = sxssfWB.createSheet(sheetName);
/**
* 设置样式
*/
CellStyle headerStyle = sxssfWB.createCellStyle();
//居中
headerStyle.setAlignment(HorizontalAlignment.CENTER);
//垂直
headerStyle.setVerticalAlignment(VerticalAlignment.CENTER);
//标题字体
Font headerFont = sxssfWB.createFont();
//字体加粗
headerFont.setBold(true);
headerFont.setFontHeightInPoints((short) 11);
headerStyle.setFont(headerFont);
short width = 20, height = 25 * 20;
sheet.setDefaultColumnWidth(width);
int iniRow = 0;
row = sheet.createRow((short) iniRow);
/**
* 设置表格标题行
*/
for (int i = 0; i < titles.size(); i++) {
cell = row.createCell(i);
cell.setCellType(SXSSFCell.CELL_TYPE_STRING);
cell.setCellValue(titles.get(i));
cell.setCellStyle(headerStyle);
}
sheet.getRow(0).setHeight(height);
//内容样式
CellStyle contentStyle = sxssfWB.createCellStyle();
//居中
headerStyle.setAlignment(HorizontalAlignment.CENTER);
int varCount = varList.size();
/**
* 设置表格内容
*/
for (int i = 0; i < varCount; i++) {
row = sheet.createRow(i + 1);
Map<String, String> vpd = varList.get(i);
for (int j = 0; j < titles.size(); j++) {
cell = row.createCell(j);
String varstr = vpd.get("var" + (j + 1)) != null ? vpd.get("var" + (j + 1)) : "";
cell.setCellType(SXSSFCell.CELL_TYPE_STRING);
cell.setCellValue(varstr);
cell.setCellStyle(contentStyle);
}
}
}
}
ObjectExcelView,EXCEL导出工具类,适用于POI-3.17
最新推荐文章于 2021-07-01 00:00:24 发布