首页 > 解决方案 > 未应用 Apache POI Java XSSFCell 数据格式

问题描述

目前我正在努力将 DataFormat 设置为特定的行。

这就是我的 Excel 工作表的样子。我有这 4 列。第 1 列应采用 DataFormat Number 第 2 列和第 3 列应采用 DataFormat Date 第 4 列可以 这就是我的 Excel 工作表的样子。 我有这 4 列。 第 1 列应采用 DataFormat Number 第 2 列和第 3 列应采用 DataFormat Date 第 4 列可以

public static void createTableRow(Sheet sheet, List<String> EDIROWKeys, int col, CellStyle style , int lastRowNum){
    
    if(sheet == null){
        return;
    }
    int lastRow = lastRowNum;
    int newRow = lastRow + 1;
    Workbook wb = sheet.getWorkbook();
    SimpleDateFormat format = new SimpleDateFormat();
    CreationHelper helper = wb.getCreationHelper();
    org.apache.poi.ss.usermodel.DataFormat date = wb.createDataFormat();
    XSSFRow row = (XSSFRow) sheet.createRow(newRow);
    if(row == null){
        return;
    }
    int startCol = col;
    for(String string : EDIROWKeys){
        XSSFCell cell = row.createCell(startCol);
    
        FOe.getFOPSessionContext().getDbContext().out().println(string);
    
        if(style != null){
        
            cell.setCellStyle(style);
        }else  {
            XSSFWorkbook wbx = (XSSFWorkbook) sheet.getWorkbook();
            XSSFDataFormat dataformat = wbx.createDataFormat();

            XSSFCellStyle cs = wbx.createCellStyle();
            if(startCol == 1){
                cs.setDataFormat(dataformat.getFormat("#"));
            }
            cell.setCellStyle(cs);
            
        }
        cell.setCellValue(string);
        
        startCol++;
    }
    return;
}   

这是我用来创建行和列的方法 https://poi.apache.org/apidocs/dev/org/apache/poi/ss/usermodel/BuiltinFormats.html 这是我从中获取数据格式的资源. 我还尝试将这些带有 HssfDataformat 的 DataFormat 应用到我的单元格 - 也没有成功。

我感谢任何有用的输入:)

通过使用 setCellValue(Double);... 解决

if(string.matches("\\d+")){
        cell.setCellValue(Double.valueOf(string));
        startCol++;
        continue;
    }

标签: javaexcelapache-poidataformat

解决方案


我看到一种可能的情况。如果方法参数style为 null,XSSFCellStyle cs则新样式不会应用于单元格。cell.setCellStyle(cs)失踪了吗?


推荐阅读