[英]LinqToExcel - Reading a decimal from an *.xlsx file
我已經在這個問題上擺弄了兩個小時,我有點圈了。 我想念一些東西。
我正在嘗試使用Linq to Excel閱讀Excel工作表。 除工作表中的小數點外,所有內容均按順序工作。 我嘗試了幾種不同的方法,但似乎都沒有用。
我嘗試讀取的列是貨幣列。 我的模型是十進制的。 當我將列保留為excel的Currency格式時,從linq查詢中得到0。
當我將列設置為數字時,我得到的值沒有小數點分隔符。
我創建的測試文件有一個名為DecimalSheet的工作表。 該列稱為DecimalTest,其中包含一個數字。 4587,61
我有一個這樣的測試模型;
public class DecimalModel
{
[ExcelColumn("DecimalTest")]
public decimal DecimalTest { get; set; }
}
查詢文件是這樣實現的:
var testFile = new ExcelQueryFactory(fileLocation)
{
DatabaseEngine = LinqToExcel.Domain.DatabaseEngine.Ace,
TrimSpaces = LinqToExcel.Query.TrimSpacesType.Both,
UsePersistentConnection = false,
ReadOnly = true
};
var decimalTestModel = from tb in testFile.Worksheet<DecimalModel>("DecimalSheet")
select tb;
var lines = decimalTestModel.ToList();
讀數是這樣的:45876100000000000M
編輯1
在此期間,我嘗試了:
string
。 無論我使用哪種單元格格式,這都為我提供了單元格中值的科學表示法。 它讀取為“ 4,58761e + 016”,而不是4587,61。 string
處理。 它顯示為“ 4,58761e + 016”,而不是“ 4587,61” nl-NL
硬編碼,並在完成后將其設置回原始文化一樣。 這沒什么區別。 我注意到:
nl-NL
)上運行上述測試代碼時,它可以正常工作。 它在英語服務器的“ en-US”語言環境中不起作用。 讓我認為這與本地化或文化有關嗎? 誰能向我指出正確的方向,我該如何配置excel /更改代碼以使它讀取正確的十進制數?
在嘗試了其他幾個選項之后,我也轉到了nuGet軟件包的github項目頁面,並在那里發布了一個問題( https://github.com/paulyoder/LinqToExcel/issues/143 )。
解決方案非常簡單。 在Windows日期設置中更改我的語言環境。 因為所有文件都是荷蘭文,所以這對我來說很有意義。 只有Windows是英語。
這是通過“控制面板”->“區域”完成的
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.