之前整理的NPOI導入導出Excel 在之前使用過程中沒發現問題。
但是后來發現導入的文檔如果有日期時間格式,導入時會有混亂
后來找了一下解決方案,最終將其中一段修改即可導入日期(導出未測試)
原因
大概是NPOI導入時會大概判斷一下Excel文檔里面的單元格是什么格式的內容,
有Blank,Boolean,Numeric,String,Error,Formula 等幾種,
但是就是沒有日期的,日期的單元格會被判斷成Numeric(數字)類型,
所以日期格式的單元格就按數字類型來取其中的值,
所以單元格被判斷成數字的之后還要再判斷一下是否為日期格式。
/// <summary> /// 獲取單元格類型 /// </summary> /// <param name="cell"></param> /// <returns></returns> private static object GetValueType(ICell cell) { if (cell == null) return null; switch (cell.CellType) { case CellType.Blank: //BLANK: return null; case CellType.Boolean: //BOOLEAN: return cell.BooleanCellValue; case CellType.Numeric: //NUMERIC: short format = cell.CellStyle.DataFormat; if (format != 0) { return cell.DateCellValue; } else { return cell.NumericCellValue; } case CellType.String: //STRING: return cell.StringCellValue; case CellType.Error: //ERROR: return cell.ErrorCellValue; case CellType.Formula: //FORMULA: default: return "=" + cell.CellFormula; } }
注意
使用時Excel里的長數字類型,否則這類數據可能會被誤判為日期類型
如:0000123,2017001等這類型的需要處理一下單元格格式->設置成"常規"類型


轉載請注明出處,by lazyneal 2017
