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

linqtoexcel c# make blank fields null or 0 after fetching them?

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

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

有没有办法在不触及 excel 文件的情况下使这些字段为空或至少使它们为 0?

我唯一觉得奇怪的是我可以很容易地将单元格读取为字符串,它们看起来只是空的,但是当我尝试将它们更改为小数时,错误就发生了。

这是我连接和查询 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:

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;
  }
} 

您可以在 get 中添加一个正文,用于测试当前值是否存在各种不受欢迎的情况,并且 returns 改为“0”,例如

private string _fatDog;
public string FatDog(
  if(_fatDog == null)
    return "0";
  else if(_fatDog == "")
    return "something else";
  else if(_fatDog.StartsWith("'Data")) //ensure _fatDog isn't null before you do this - this code here does that in the "if(_fatDog == null)" part
    return "123";
  else
    return _fatDog;
) 

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