【发布时间】:2018-09-11 21:21:22
【问题描述】:
基本上我有一个包含很多工作表的 excel 文件,只要其中一个工作表引用另一个工作表,但引用是一个空单元格,例如“示例”工作表中的单元格“C5”引用“RefEx”工作表中的单元格“J10”,如果单元格“J10”为空,则单元格“C5”将为空白,但不会为空,因为它仍然包含引用,因此我无法将其插入到我的数据库,因为我需要将其作为小数插入(空行插入为 0,00)。
只要我更改具有这些引用的列的格式,它就可以在带有引用的空白单元格上插入 0,00,但是对于我拥有的工作表数量来说,这是很多手动工作,并且将拥有.
有没有办法让这些字段为空或至少只是让它们为 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;
}
}
【问题讨论】:
标签: c# excel linq linq-to-excel