linqtoexcel c#在获取空白字段后将其设置为null还是0?

时间:2018-09-11 21:21:22

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

基本上,我有一个包含很多工作表的excel文件,只要其中一个工作表引用了另一个工作表,但引用是一个空单元格,例如“示例”工作表中的单元格“ C5”引用了“ RefEx”工作表中的单元格“ J10”,如果单元格“ J10”为空,则单元格“ C5”将为空,但不会为空,因为它仍然包含引用,因此无法将其插入到我的数据库,因为我需要将其插入为小数(将空行插入为0,00)。

它可以正常工作,并且只要我更改具有引用的列的格式,就可以在带有引用的空白单元格上插入0,00,但这需要大量的手动工作,并且要具有

是否有一种方法可以使这些字段为null或至少将它们设置为0而无需触摸excel文件?

我唯一奇怪的是,我可以轻松地将单元格读取为字符串,它们看起来似乎是空的,但是一旦我尝试将它们更改为小数,就会出现错误。

这是我连接和查询Excel文件的方式:

string pathToExcelFile = @"D:\Programming Tools\Visual Studio\Projects\KPIimport\SampleXLSFile.xls";
ConnectionExcel ConObject = new ConnectionExcel(pathToExcelFile);
var query2 = from a in ConObject.UrlConnection.Worksheet<Product>("Sample-spreadsheet-file") select a;

我的班级:

class Product {
    public string ItemName {
        get;
        set;
    }
    public string DogName {
        get;
        set;
    }
    public string FatDog {
        get;
        set;
    }

在我的代码中发生错误的地方,因为它期望可以将其转换为小数的字符串,但是引用却与之混淆:

command.Parameters.AddWithValue("@ItemName", item.ItemName);
command.Parameters.AddWithValue("@DogName", item.DogName);
command.Parameters.AddWithValue("@FatDog", Convert.ToDecimal(item.FatDog));

感谢Caius Jard,它已通过以下方式修复:

private string _fatDog;
public string FatDog {
  get {
    if(_fatDog == null) {
       return "0";
    } else if(_fatDog == "") {
       return "0";
    } else if(_fatDog == "-"))
       return "0";
    } else {
       return _fatDog;
    }
  }
  set {
     _fatDog = value;
  }
} 

1 个答案:

答案 0 :(得分:1)

您可以在get中添加一个主体,以测试当前值是否存在各种不良情况,例如,返回“ 0”

node_modules

顺便说一句,偶尔有很好的理由避免使用AddWithValue-https://blogs.msmvps.com/jcoehoorn/blog/2014/05/12/can-we-stop-using-addwithvalue-already/

相关问题