基本上,我有一个包含很多工作表的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;
}
}
答案 0 :(得分:1)
您可以在get中添加一个主体,以测试当前值是否存在各种不良情况,例如,返回“ 0”
node_modules
顺便说一句,偶尔有很好的理由避免使用AddWithValue-https://blogs.msmvps.com/jcoehoorn/blog/2014/05/12/can-we-stop-using-addwithvalue-already/