2012-07-13 36 views
1

我得到試圖打開一個Excel工作表與MS Office 2003這個Excel工作表時的錯誤得到錯誤創建使用HSSFWorkbook,實施的usermodel範圍org.apache.poi.hssf.usermodel使用POI HSSF

在Microsoft Excel 2003中:「太多不同的單元格格式」。在Microsoft Excel 2007/2010中,文件可能會生成以下錯誤消息:「Excel在文件中發現不可讀的內容」。這是關於單元格格式,請參考以下頁面:

http://support.microsoft.com/kb/213904

那麼如何才能解決這個問題的代碼?

+0

你能告訴我們代碼嗎? – cporte 2012-07-13 19:15:30

+0

您是否可能爲每個單元生成一種單元格格式?單元格格式爲工作簿範圍,應該重新使用... – Gagravarr 2012-07-13 20:38:17

回答

2

Excel對您可以擁有的不同單元格樣式的數量有限制,而且出奇的低。對於使用POI的新手來說,一個常見問題是他們跳過關於單元格樣式的工作簿範圍,而是他們爲每個單元格創建一種單元格樣式。這很快促使他們在Excel中的限制...

你在哪裏代碼以前可能看起來像

Sheet s = wb.createSheet(); 
for (int rn=0; rn<=10; rn++) { 
    Row r = s.createRow(rn); 
    for (int cn=0; cn<=4; cn++) { 
     Cell c = r.createCell(c); 
     c.setCellValue(getMyCellValue(rn,cn)); 

     CellStyle cs = wb.createCellStyle(); 
     cs.setBold(true); 
     if (cn == 2) { 
      cs.setDataFormat(DataFormat.getFormat(yyyy/mm/dd)); 
     } 
     c.setCellStyle(cs); 
    } 
} 

你,而不是要拉你的單元格樣式創造出來開始,像

CellStyle bold = wb.createCellStyle(); 
bold.setBold(true); 

CellStyle boldDate = wb.createCellStyle(); 
boldDate.setBold(true); 
boldDate.setDataFormat(DataFormat.getFormat(yyyy/mm/dd)); 

Sheet s = wb.createSheet(); 
for (int rn=0; rn<=10; rn++) { 
    Row r = s.createRow(rn); 
    for (int cn=0; cn<=4; cn++) { 
     Cell c = r.createCell(c); 
     c.setCellValue(getMyCellValue(rn,cn)); 

     CellStyle cs = bold; 
     if (cn == 2) { 
      cs = boldDate; 
     } 
     c.setCellStyle(cs); 
    } 
} 
相關問題