【发布时间】:2015-08-26 01:21:26
【问题描述】:
在我的项目中,我需要读取 Excel 工作表数据并对其进行验证。然后存入数据库。它工作正常,在这个excel模板中row 1是标题,数据将从row 2开始。
例如:-
Name Age Arabic Name Category
Jack 30 بيب A
var mem = from memRec in excelFile.Worksheet("Addition Form")select memRec;
然后我可以使用memRec["Age"],memRec["Name"] etc.获取详细信息
这工作正常。
现在客户有一个不同的模板,其中前 3-4 行与他们的徽标和所有内容合并。标头位于row 4,数据将从row 5 开始。
例如:
row1
row2
row3
row4 Name Age Arabic Name Category
row5 Jack 30 بسيب A
我试过下面的代码来阅读这个
var mem = from memRec in excelFile.Worksheet("Addition Form")select memRec;
它没有读取它并给出错误,因为标题仅从第 4 行开始。
我也不知道数据的范围,因为它取决于用户填写 数据。
所以我无法指定工作表范围。
有没有办法指定开始行通过Linq读取excel。同样,一旦完成,我们可以将行指定为
memRec["Age"],memRec["Name"] etc.?
已编辑
我用下面的代码
mem = from memRec in excelFile.Worksheet("Addition Form").Skip(2) select memRec;
但是当我尝试调用 memRec["Age"] 时,它会给出错误提示 no such column and columns available are Logo1,namecomp...etc.. 这是 excel 表第一行的内容
我的excel表格现在是这样的
row1 Logo1 namecomp place situation
row2 Name Age ArabicName Category
row3 John 30 يبي A
我不希望 row1 作为我的列标题。列标题在第 2 行,数据从第 3 行开始。
现在,当我尝试读取 memrec["Name"] 时,它会给出错误提示 没有这样的列标题。可用的列标题是 Logo1、namecomp 等等。
请帮我解决这个问题..
【问题讨论】:
-
不完全确定实施细节,但我可以跳过前 4 个结果并自己设置列名。
-
@ameer 如何自己设置列名?如果我跳过前 3 个结果,第 4 行是列名。所以我不能使用它吗?
-
Linq 似乎喜欢所有列都相同。如果您找不到解决方案,请不要害怕退出该代码并使用基本的 for 循环 来遍历您的数据。
-
@jp2code 不明白如何forloop excel数据..
标签: c# asp.net-mvc linq