关于java:XSSF Apache POI

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输入数据,则默认格式不适用,您必须使用
setCellStyle(CellStyle)

例如。 对于文字样式:

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("@"));