首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CSV文件中的Linq-To-Excel,缺少小数分隔符

CSV文件中的Linq-To-Excel,缺少小数分隔符
EN

Stack Overflow用户
提问于 2015-11-27 04:47:46
回答 2查看 1.2K关注 0票数 2

我正在使用Linq- to -Excel包来读取CSV文件。我创建了一个用于保存结果的类:

代码语言:javascript
复制
public class ReconciliationLineLinqToExcel
{
    public string OperatingUnit { get; set; }
    public Int64 CustomerTenantId { get; set; }
    public string CustomerName { get; set; }
    public string SyndicationPartnerSubscriptionNumber { get; set; }
    public string DurableOfferId { get; set; }
    public DateTime SubscriptionStartDate { get; set; }
    public DateTime SubscriptionEndDate { get; set; }
    public DateTime ChargeStartDate { get; set; }
    public DateTime ChargeEndDate { get; set; }
    public string ChargeType { get; set; }
    public decimal UnitPrice { get; set; }
    public int Quantity { get; set; }
    public decimal Amount { get; set; }
    public decimal TotalOtherDiscount { get; set; }
    public decimal Subtotal { get; set; }
    public decimal Tax { get; set; }
    public decimal TotalForCustomer { get; set; }
    public string Currency { get; set; }
}

每个属性都是CSV文件中的一列。

CSV的标题行:

代码语言:javascript
复制
OperatingUnit,CustomerTenantId,CustomerName,MpnId,OrderId,SubscriptionId,SyndicationPartnerSubscriptionNumber,OfferId,DurableOfferId,OfferName,SubscriptionStartDate,SubscriptionEndDate,ChargeStartDate,ChargeEndDate,ChargeType,UnitPrice,Quantity,Amount,TotalOtherDiscount,Subtotal,Tax,TotalForCustomer,Currency

这是CSV文件中作为输入的样例行:(我审查了一些数据)

代码语言:javascript
复制
e588f1c2-69f1-4b78-3c4d-9b844d03c18e,"1338338173","COMPANY NAME",1382187,"567172081122654669","p3rITwAAAABBAAIA","68752F49-D9CA-4870-8955-3EEB26E37068","B0D93AE5-400E-4CBC-A465-D12B9FFA75AB","031C9E47-4845-4248-838E-778FB1D2CC05","OFFICE 365 BUSINESS PREMIUM",11/04/2015 00:00:00,11/23/2016 00:00:00,11/23/2015 00:00:00,12/22/2015 00:00:00,"CYCLE FEE",8.44,8,67.52,0,67.52,0,67.52,"EUR"

使用此代码,我打开CSV文件并读取以下代码行:

代码语言:javascript
复制
var csv = new ExcelQueryFactory(filename);
var data = csv.Worksheet<ReconciliationLineLinqToExcel>(0);

当我迭代数据变量并查找此行时,所有的十进制值都缺少小数分隔符。例如,属性'Amount‘的值为6752,而不是67.52

这适用于每行中的所有十进制值。在将其解析为小数时,我认为这可能与某些文化问题有关,因此我尝试将该属性的类型更改为string。但是我得到的值是"6752",所以没什么好运气的。

有没有人知道我在这里遗漏了什么,或者这是什么bug?

EN

回答 2

Stack Overflow用户

发布于 2017-07-14 23:58:25

文档中的第一件事就是OperatingUnit。您已经将其定义为一个字符串,但是您的CSV没有用引号将其括起来。第二件事是一个Int64,正如你已经定义的,但是你用引号将它引起来。

确保你的数据类型实际上是匹配的,否则你肯定会得到意想不到的结果。

票数 0
EN

Stack Overflow用户

发布于 2017-07-14 23:54:12

如果你不喜欢Linq Excel,你可以试试LINQ to CSV。它很容易设置(5 - 10分钟),也许它会帮你解决你的问题。它足够强大,可以处理某些特殊字符,如逗号、引号和小数。

这是我用一些小数生成的测试电子表格的屏幕截图。

LINQ to CSV with decimals

我一直从另一个CSV文件中读取这些小数;它们不是硬编码的。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33946772

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档