工作中經常會用到EXCEL表,而EXCEL表中也會經常運用到公式計算。
如果遇到公式計算的數據導入網頁端系統,問題來了。
前段時間公司系統涉及導入數據,發現有一部分人在系統裡面顯示的性別為「未知」。
研究提供的導入原始excel文件發現,其中性別、出生日期、年齡三個值是通過特殊的excel公式從身份證一列計算的來的。
問題的根源是解析excel性別的時候遇到單元格中內容為一串公式,無法匹配到正常的性別,所以導入系統時,系統設置為未知。
那麼該如何解決問題呢?
從表面解決問題
如果數據量比較小,且該問題今後不會再出現,可以手工修改數據。
直接從系統找到對應的訂單修改性別即可。
但該處理方案,治標不治本。
從系統入口解決問題
製作導入系統的excel表的時候,複製內容注意,如果遇到有公式的文檔,需要特殊處理。
首先選中需要複製的單元格,進行複製;
然後複製到目的單元格,點擊右鍵,選擇性粘貼,
在彈出的窗口中選擇數值,
這樣操作後,就會把公式計算後的結果複製過來,而不是把整個公式複製過來。
從系統根源解決問題
通過對解析excel文件的程序進行優化。
掃描解析excel文件的時候,獲取每個單元格中內容過程中,加上一個邏輯判斷,根據單元格中內容的格式分別進行處理。
如果遇到格式為CellType.FORMULA,不是直接獲取內容,調用第三方庫提供的方法,獲取通過公式計算後的結果值。
XSSFFormulaEvaluator eva = new XSSFFormulaEvaluator(hssfworkbook);eva.Evaluate(row.GetCell(j)).StringValue;