用openxml讀取excel,然后將讀出的資料插到資料庫,現在出現一個問題:讀某個單元格的資料時,比如excel中的值是0.8,debug代碼時,讀出的值卻是0.32,這個單元格是有公式的,值是自動算出來的,下面是我的代碼:addressName是單元格名字(比如:Q5、R13之類的)
Cell theCell = worksheet.Descendants<Cell>().Where(c => c.CellReference == addressName).FirstOrDefault();
if (theCell != null)
{
value = theCell.InnerText;
if (theCell.CellFormula != null)
{
if (theCell.CellValue != null)
{
value = theCell.CellValue.InnerText;
}
else {
return null;
}
}
}
比如讀到Q51(Q列第51行)的值時,theCell.InnerText的值是“=ROUND(SUM(J51*I51,L51*K51,N51*M51,P51*O51),2)0.320000”,theCell.CellValue.InnerText的值是“0.320000”,但實際上在excel中Q51的值是0.8,詭異的是并不是Q列多有的值都會讀錯,只有個別的讀錯。
excel中的sheet是加了密碼保護的,把密碼保護去掉就不會讀錯,但讀不到公式,下面是給sheet加密的代碼:
SheetProtection sheetProtection = new SheetProtection() { Sheet = true, Objects = true, Scenarios = true, Password = "****" };
worksheet.InsertAfter(sheetProtection, ws.GetFirstChild<SheetData>());
有哪位大神遇到過這種情況或有辦法解決的,麻煩幫幫我,謝謝!
uj5u.com熱心網友回復:
是不是四舍五入的區別?你重新建個檔案,不用公式,直接寫數字進去,再讀取對比一下看看
uj5u.com熱心網友回復:
不是四舍五入的問題,四舍五入不可能把0.8變成0.32啊,沒有公式的話是可以的uj5u.com熱心網友回復:
=ROUND(SUM(J51*I51,L51*K51,N51*M51,P51*O51),2)0.320000,這個是Excel里的公式?不行就換一個組件,像epplus也不錯
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/104715.html
標籤:ASP.NET
上一篇:關于應用資料的分析提取
