【问题标题】:C# LINQ to Excel can't read decimalsC# LINQ to Excel 无法读取小数
【发布时间】:2017-10-10 11:13:39
【问题描述】:

我有一列数字是小数,格式为##,#,逗号作为分隔符。 LINQ to Excel 库将它们读取为 0。 Excel file.

模型属性:

[ExcelColumn("Хим. добавки1")]
public decimal Chemical1 { get; set; }

我的代码:

var data = from a in file.WorksheetRange<Import>("A2", "U10000", "Учет производства").select a;
var datalist = data.Take(data.Count() - 1).ToList();

What did I get

附:抱歉,我无法打开 imgur。

编辑: 模型属性对应的 Excel 列

  • K柱-Sheben1
  • L 柱 - Pesok1
  • M 列 - Pesok2
  • N 列 - Sheben2
  • O 柱 - 水泥 1
  • P 柱 - 水泥 2
  • Q 列 - 化学 1
  • R 柱 - Chemical2
  • S 柱 - Water1
  • T 柱 - Water2
  • U 柱 - Water3

【问题讨论】:

  • 你得到的数字与电子表格上的数字都不对应 - 所以我们很难确定发生了什么。
  • 不,但这里缺少最小可行的演示 - “我得到了什么”显示的数字与电子表格中显示的内容无关。
  • 但是第一个数字与屏幕截图中的数字不匹配!
  • 我建议编辑问题(避免使用屏幕截图 imgurl 或 prntscr)并添加 minimal reproducible example。构建一个最小的示例有时您可以找出问题的原因。
  • 只是为了确认 Q 列中的整数项(例如 21)是否正确通过?即,这些带有逗号的条目绝对是一个问题,而不是根本没有读入 Q 列的问题(只是考虑列名中是否存在某种拼写错误或类似内容)

标签: c# excel oledb linq-to-excel


【解决方案1】:

问题在于“。”当您尝试映射列时,linqtoexcel 使用更改“。”的 OleDb改为“#”,所以如果您不想更改excel中的列,只需输入“#”而不是“。”映射列时

所以以你的代码为例

改变这个:

[ExcelColumn("Хим. добавки1")]
public decimal Chemical1 { get; set; }

到这里:

[ExcelColumn("Хим# добавки1")]
public decimal Chemical1 { get; set; }

【讨论】:

  • 另外,我意识到这是一个很晚的答案,但迟到总比没有好
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-05-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多