C# LinqToExcel-从*.xlsx文件读取十进制数
我已经摆弄了好几个小时了,我有点绕圈子了。我错过了一些东西 我正在用Linq to excel阅读excel表格。除了表中的小数外,一切都按顺序进行。我尝试过几种不同的方法,但似乎都不管用 我想读的专栏是货币专栏。我的型号是十进制的。当我在excel中保留货币格式的列时,我从linq查询中得到0 当我将列设置为数字时,得到的值没有小数点分隔符 我创建的testfile有一个名为DecimalSheet的表。该列称为DecimalTest,包含一个数字;4587,61 我有一个这样的测试模型C# LinqToExcel-从*.xlsx文件读取十进制数,c#,excel,decimal,linq-to-excel,C#,Excel,Decimal,Linq To Excel,我已经摆弄了好几个小时了,我有点绕圈子了。我错过了一些东西 我正在用Linq to excel阅读excel表格。除了表中的小数外,一切都按顺序进行。我尝试过几种不同的方法,但似乎都不管用 我想读的专栏是货币专栏。我的型号是十进制的。当我在excel中保留货币格式的列时,我从linq查询中得到0 当我将列设置为数字时,得到的值没有小数点分隔符 我创建的testfile有一个名为DecimalSheet的表。该列称为DecimalTest,包含一个数字;4587,61 我有一个这样的测试模型 pu
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();
var testFile=new ExcelQueryFactory(文件位置)
{
DatabaseEngine=LinqToExcel.Domain.DatabaseEngine.Ace,
TrimSpaces=LinqToExcel.Query.TrimSpacesType.Both,
UsePersistentConnection=false,
只读=真
};
var decimalTestModel=来自testFile.Worksheet(“DecimalSheet”)中的tb
选择结核病;
var lines=decimalTestModel.ToList();
读数如下:45876100000000000M
编辑1
在此期间,我尝试:
字符串
。这给了我一个机会
单元格中值的科学表示法,无论是哪种类型的
我使用的单元格格式。其读数为“458761E+016”,而不是4587,61字符串
如上所述。其读数为“458761E+016”,而不是“4587,61”nl-nl
在创建工厂和
在我完成后将其恢复到原始文化。这没有造成任何后果
差别nl-nl
)工作正常。在电视上
英语服务器“en US”区域设置表明它不工作。让我想
这和本地化或文化有关吗有人能告诉我如何配置excel/更改代码以使其正确读取十进制数吗?在尝试了两个其他选项后,我也转到了这个nuGet软件包的github项目页面,并在那里发布了一个问题() 解决办法很简单,;在windows日期设置中更改我的区域设置。这对我来说很有意义,因为所有的文件都是荷兰语的。只有windows是英文的 这是通过控制面板->区域完成的
当您尝试使用
float
时会发生什么?另外,您的读数中是否漏掉了逗号或点?我试过使用Float
。但那不管用。输出保持不变。奇怪的细节;当我打开excel时,它返回正确的值4587,61。这为我指明了一个语言问题的方向。当我在生产服务器(荷兰Excel+Windows版本)上运行此代码时,它工作正常!当我在我的开发服务器(英语Windows+Excel)上运行这个时,它不起作用。大致猜测一下,Excel中的列类型是什么?一般,数字,字符串?可能是荷兰语和英语的逗号解析问题,需要一个点。尝试了两种不同的设置,常规、数字和货币。甚至尝试了从字符串到十进制的文本和手动解析。解决方案位于decelopment服务器的我的区域设置中(如下所示)