C# NPOI 日期格式


之前整理的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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM