als*_*foo 0 c# linq import-from-excel linq-to-excel
我有一张xls格式的excel表,我使用LinqToExcel读取它,然后将其导入我的数据库.
此表包含约3K行和仅6列.我使用.addmapping将我的类属性映射到列名
我遇到的问题是:尽管单元格中有数据,但"网络代码"列的单元格仍然是空的.
这是一个空的样本数据!

我的代码观看

以下是数据正确的示例数据:

我的代码观察

我已经尝试将ExcelColumn属性应用于映射,但没有运气!
码:
var factory = new ExcelQueryFactory(_excelFilePath);
factory.AddMapping<ExcelPriceEntity>(x => x.WebCode, "WEB-CODE");
factory.AddMapping<ExcelPriceEntity>(x => x.Type, "TYPE");
factory.AddMapping<ExcelPriceEntity>(x => x.Style, "STYLE");
factory.AddMapping<ExcelPriceEntity>(x => x.Qty, "QTY");
factory.AddMapping<ExcelPriceEntity>(x => x.UnitPrice, "Unit Price");
factory.AddMapping<ExcelPriceEntity>(x => x.Bucket, "WEBCODE W/BUCKET");
factory.StrictMapping = StrictMappingType.ClassStrict;
factory.TrimSpaces = TrimSpacesType.Both;
factory.ReadOnly = true;
var prices = factory.Worksheet<ExcelPriceEntity>(_allPricesSheetName).ToList();
var priccerNP = prices.Where(p => p.Type.Contains("900 ARROW TAPE")).ToList();
Run Code Online (Sandbox Code Playgroud)
我的PriceEntity类:
public class ExcelPriceEntity
{
//[ExcelColumn("TYPE")]
public string Type { get; set; }
public string WebCode { get; set; }
//[ExcelColumn("STYLE")]
public string Style { get; set; }
//[ExcelColumn("QTY")]
public string Qty { get; set; }
//[ExcelColumn("Unit Price")]
public string UnitPrice { get; set; }
//[ExcelColumn("WEBCODE W/BUCKET")]
public string Bucket { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
替代解决方案: 我最终将excel表保存为csv文件,然后导入到SQL表中.然后我使用linq-to-sql读取数据.
根本原因: 经过研究我发现问题是这个列的第一个单元格(网络代码)是整数,并且excel通过查看第一行来找出列的数据类型!
因此,下一行(网络代码)列是一些文本数据.所以excel无法将其解析为整数,并为其赋值空值!
我可以做的是,将文本值分配给第一个单元格,因此excel会将数据类型猜测为字符串.但我没有测试过.对于阅读此答案的任何人,如果您遇到同样的问题,请尝试在第一行中输入文本值
| 归档时间: |
|
| 查看次数: |
1753 次 |
| 最近记录: |