4

我需要将特定的数据格式应用于单元格。

XSSFCellStyle cellStyle  = workBook.createCellStyle();          
XSSFDataFormat format = workBook.createDataFormat();
cellStyle.setDataFormat(format.getFormat("m/d/yy h:mm"));
dataCell.setCellType(1); //String
dataCell.setCellStyle(cellStyle);

正在写入数据,但问题是格式 在我打开 excel 表(在 Excel 应用程序中)时应用,在单元格内单击我的数据。
然后按 Enter 键。只有这样才会应用格式。

如何在不单击每个单元格的情况下应用格式?

4

2 回答 2

3

您的问题是您将单元格设置为字符串。在大多数情况下,单元格格式规则仅适用于数字单元格。它们不适用于字符串单元格,那些没有格式化(因为它们已经格式化为字符串!)

XSSFCellStyle cellStyle  = workBook.createCellStyle();          
XSSFDataFormat format = workBook.createDataFormat();
cellStyle.setDataFormat(format.getFormat("m/d/yy h:mm"));
dataCell.setCellStyle(cellStyle);

// Set Cell Type not really needed, the setCellValue does it
dataCell.setCellType(Cell.CELL_TYPE_NUMERIC);
// Set a date value (2012-06-05 08:50)
dataCell.setCellValue(new Date(1338878999635));

当您在 Excel 中打开它时,它应该符合预期

于 2012-06-05T06:51:28.797 回答
1

这就是您将单元格格式更改为Date.

 var workBook = new XSSFWorkbook();

 var sheet = workBook.CreateSheet("Sheet1");

 var dateStyle = workBook.CreateCellStyle();

 var dataFormat = workBook.CreateDataFormat();

 dateStyle.DataFormat = dataFormat.GetFormat("M/D/YYYY");

 row.CreateCell(0).SetCellValue(item.ModifiedDate.HasValue ?  
           item.ModifiedDate.Value.ToShortDateString(): "");
 row.Cells[0].CellStyle = dateStyle; // This will change your cell to date 
format.
于 2016-01-21T20:52:03.900 回答