- 当写完行数据之后想在行后面继续增加数据有时会报错该行已经写入硬盘无法再访问,此时设置无限制访问Excel表格即可
SXSSFSheet sheet = (SXSSFSheet) writer.getSheet();
sheet.setRandomAccessWindowSize(-1);
- Excel的宽度自适应代码(大量数据时以下代码会耗时较久,建议慎用)
sheet.trackAllColumnsForAutoSizing();
writer.autoSizeColumnAll();
- 自定义单元格格式
CellStyle defaultCellStyle = StyleUtil.createDefaultCellStyle(writer.getWorkbook());
defaultCellStyle.setAlignment(HorizontalAlignment.RIGHT);
DataFormat format = writer.getWorkbook().createDataFormat();
defaultCellStyle.setDataFormat((format.getFormat("0.00")));
dateCellStyle.setDataFormat((format.getFormat("yyyy-mm-dd hh:mm:ss")));
writer.setStyle(dateCellStyle, i, j);
- 解决生成的Excel数字部分无法进行数学运算(求和之类的)的问题
CellStyle fourCellStyle = StyleUtil.createDefaultCellStyle(writer.getWorkbook());
fourCellStyle.setAlignment(HorizontalAlignment.RIGHT);
fourCellStyle.setDataFormat((format.getFormat("0.0000")));
for (int j = 1; j <= dataCount; j++) {
int i = 5;
Cell cell = writer.getCell(i,j);
if(cell != null && cell.getCellType() == CellType.STRING){
if(StringUtils.isNotBlank(cell.getStringCellValue())){
writer.writeCellValue(i,j,new BigDecimal(cell.getStringCellValue()));
}
}
writer.setStyle(fourCellStyle, i, j);
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14