2012-06-18 92 views
2

我使用的是NPOI 1.2.5.0,Visual Studio 2008。電子表格中有一個日期列。我npoi日期格式

觀察到的是,如果我在Excel中打開文件,列集大小設置爲自動設置,保存它,

不言而喻fine.I不能使用此解決方案,因爲對生產沒有安裝Excel中

PC。

否則,該日期欄顯示####代替日期,當我處理其它邏輯/使用NPOI和保存該文件的編碼

。我打開Excel,它說文件已損壞,需要

恢復,數據可能會丟失。如果我點擊「是」,它會恢復文件並顯示 一切正確。

我發現,這是可以解決的,如果我使用

Microsoft Excel中打開文件自動設置日期欄保存Excel。使用NPOI .net代碼處理後,它確實打開。

  1. 所以我決定做自動設置THR」代碼中使用NPOI,它不會增加日期

列的寬度,而不是它顯示的數字在那裏。

我寫了下面的代碼來設置日期格式,但它是不是顯示

日期的數量。我在此塊之前或之後嘗試了autoset代碼,沒有改變。

for (int i = 0; i <= nTotalRows; i++) 
      { 
       HSSFCellStyle cellStyle = (HSSFCellStyle)templateWorkbook.CreateCellStyle(); 
       HSSFCell Cell = (HSSFCell)exlSheet.GetRow(i).GetCell(nCheckColumn); 
       //(HSSFCell)exlSheet.Sheet.get .SetDefaultColumnStyle(nCheckColumn, 
       cellStyle.DataFormat = HSSFDataFormat.GetBuiltinFormat("mm-dd-yy"); 
       Cell.CellStyle = cellStyle; 
       MemoryStream ms = new MemoryStream(); 
       templateWorkbook.Write(ms); 
       ms.Close(); 
       FileStream fs1 = new FileStream(strFilePath, FileMode.Create); 
       templateWorkbook.Write(fs1); 
       fs1.Close(); 
      } 

請爲此提出解決方案。我正在搜索Getcolumn以將數據格式設置爲

完整列而不是單元格。

回答

1

我使用它來自動設置的列寬度:

HSSFSheet sheet = (HSSFSheet)workbook.GetSheetAt(x); 
sheet.AutoSizeColumn(y); 

其中x是在片材數,y是列號。這將至少設置寬度,所以excel不顯示###

+0

它已久回我貼了問題,那個時候我發佈了bug的版本。我需要嘗試上面的建議。 –