Linq excel无法在excel中find列
我正在使用Linq到Excel库来获取excel表格中的一个,我遇到的问题是,我的电话不能find指定名称的列。
public IQueryable<Cell> getExcel() { var excel = new ExcelQueryFactory(); excel.FileName = @"C:\Users\Timsen\Desktop\QUOTATION.CSV"; var indianaCompanies = from c in excel.Worksheet() select c["ARTICLE TEXT"]; return indianaCompanies; }
错误:
有效的列名是'QUOT NO; DEBTOR; ITEM; ART NO; HWS NO#; BRANCH PRICE; QTY; PR; ARTICLE T',' F2','F3','F4','F5'“}
Excell中表的名称
QUOT
没有
债务人
项目
艺术
没有
HWS
没有。
分支价格
QTY
PR
文章
types名称
销售价格
QT%
DIS
量
UNI
乙
ARTG
SUPPL
义务
Excel的UPDAte示例:
你能告诉我们的第一行或两个csv文件?
如果我正确地解释错误信息,标题行有分号而不是逗号分隔符。
具体来说,错误消息似乎列出这些列名称(请注意,它使用单引号和逗号来尝试清除,这似乎很有用)。
- 'QUOT NO; DEBTOR; ITEM; ART NO; HWS NO#; BRANCH PRICE; QTY; PR; ARTICLE T'
- 'F2'
- 'F3'
- 'F4'
- 'F5'
由于第一列名称是64个字符,因此我假定在这一点上切断了,如果这个限制没有到位,那么其余的列也将在那里(仍以分号分隔)。
不能确定,如果你可以用linq-to-excel项目指定一个不同的分隔符,因为它似乎使用Jet作为csv文件,按照https://github.com/paulyoder/LinqToExcel/blob/792e0807b2cf2cb6b74f55565ad700d2fcf31e19 /src/LinqToExcel/Query/ExcelUtilities.cs
如果使它成为一个“真正的”csv不是一个选项,库不支持指定一个替代的分隔符,你可能只能通过检查文件中的行(除了第一个)和拉在第十二列(因为这似乎是文章的文字)。
所以,像这样的:
var articleTextValues = // Skip(1) since we don't want the header from line in File.ReadAllLines(@"C:\Users\Timsen\Desktop\QUOTATION.CSV").Skip(1) select line.Split(';')[11];
将您的代码更改为:
public IQueryable<Cell> getExcel() { var excel = new ExcelQueryFactory(); excel.FileName = @"C:\Users\Timsen\Desktop\QUOTATION.CSV"; var indianaCompanies = from c in excel.Worksheet() select c["ARTICLE T"]; return indianaCompanies; }
它列出了有效的列名称。 对于由QTY; PR所指示的列的一些标题有问题; 意味着它parsing了两个不同的列而不是一个。 F2表示它不知道实际上应该调用的标题。
最简单的解决scheme是validation正在导入到以下查询匹配您的Excel文档的数据。
var indianaCompanies = from c in excel.Worksheet() select *;
我相信会起作用。