2012-06-05 117 views
3

我需要將特定數據格式應用於單元格。使用POI應用特定單元格數據格式

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鍵。 只有格式被應用。

如何在不點擊每個單元的情況下應用格式?

+0

您忽略了將樣式應用於單元格的Java代碼。請將其添加到您的示例代碼中。 –

+0

我添加這行(只有一行),但我不認爲這個問題,因爲格式設置在單元格上。但是我只能在選擇單元格末尾時按Enter鍵才能看到格式。 – markiz

回答

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中打開,它應該是有預期

+0

我從文本文件中讀取輸入數據(2/5/2012 12:34),是否需要將數據轉換爲Date對象? – markiz

+0

爲什麼當我選擇它並按下Excel內的輸入時,單元格正在格式化? – markiz

+0

是的,如果你想讓它在Excel中正確顯示,那麼你需要將它設置爲日期而不是字符串 – Gagravarr

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. 
相關問題