XSSF Apache POI
我使用以下内容在XSSF工作表中设置默认列样式? 但这无法正常工作,任何人都可以建议该错误修复程序。
1 2 3 4 | format = workbook.createDataFormat(); style = workbook.createCellStyle(); style.setDataFormat(format.getFormat("@")); sheet.setDefaultColumnStyle(1, style); |
从POI 4.1.0开始,它可以与SXSSF一起使用,但需要注意。
默认的列样式仅定义当用户将数据输入到POI创建的工作表中的空单元格中时将应用的样式。
如果您创建单元格并通过POI输入数据,则默认格式不适用,您必须使用
例如。 对于文字样式:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | private CellStyle createTextFormat(SXSSFWorkbook workbook) { DataFormat fmt = workbook.createDataFormat(); CellStyle textStyle = workbook.createCellStyle(); textStyle.setDataFormat(fmt.getFormat("@")); return textStyle; } // then do both: int columnIndex = 0; sheet.setDefaultColumnStyle(columnIndex, textFormat) SXSSFCell cell = row.createCell(0); cell.setCellStyle(textFormat); cell.setCellValue("0100"); |
此错误可能使您头痛。 使用Apache POI 3.7尝试代码时,我得到了另外的效果,即第二列被隐藏(宽度= 0),并且不应用格式。
干杯,
威姆
PS请注意,我谈论的是第二列,这是您的代码真正指的是; 如果要将样式应用于第一列,则应使用0(从零开始)。
试试这个,它将起作用:
1 | style.setDataFormat(HSSFDataFormat.getBuiltinFormat("@")); |