我现在已经花了几个小时摆弄这个,我有点走路了。我错过了什么。
我试图用Linq到Excel阅读excel表。一切都按顺序工作,除了工作表中的小数。我尝试了几种不同的方法,但似乎都没有。
我试图阅读的专栏是货币栏。我的模型是十进制的。当我使用货币格式将列保留在excel中时,我从linq查询中得到0。
当我将colum设置为number时,我得到没有小数分隔符的值。
我创建的测试文件有一个名为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
。这给我带来了
无论什么样的,细胞中的价值的科学记数法
我使用的格式。它读取&#34; 4,58761e + 016&#34;而不是4587,61。string
如上所述。它读取&#34; 4,58761e + 016&#34;而不是&#34; 4587,61&#34; nl-NL
在创建工厂之前在线程中进行了硬编码
在我完成之后将其恢复到原始文化。这没有
差。我注意到了:
nl-NL
)它工作正常。它就在
英语服务器&#39; en-US&#39;它不起作用的语言环境。让我思考
这与本地化或文化有关吗?任何人都可以指出我正确的方向如何配置excel /更改代码,使其读取十进制正确吗?
答案 0 :(得分:2)
在尝试了几个其他选项之后,我也去了这个nuGet包的github项目页面,并在那里发布了一个问题(https://github.com/paulyoder/LinqToExcel/issues/143)。
解决方案非常简单;在Windows日期设置中更改我的区域设置。这对我来说很有意义,因为所有文件都是荷兰语。只有窗口是英文的。
这是通过控制面板完成的 - &gt;区域