创建直接表示 Excel sheet 的 objects 列表
Create a list of objects that directly represents an Excel sheet
使用 LinqToExcel,我正在尝试创建一个 objects 的动态列表,该列表具有动态数量的属性(带有值)。本质上,objects的列表应该直接代表Excelsheet的内容。但是,我事先不知道 header 名称或数字列。
下面的代码不起作用,甚至无法编译,但我希望它能展示我正在尝试做的事情。它还缺少一种循环和添加正确数量的属性的方法。属性的名称和数量应来自 headers columnNameList
.
列的数组
// get the records
var excel = new ExcelQueryFactory(path);
IEnumerable<string> columnNameList = excel.GetColumnNames(mod.SelectedSheet);
var ExpandoObject = (from x in excel.Worksheet(selectedSheet)
select new ExpandoObject()
{
ExpandoObject.Prop1 = x["excelCol1"],
ExpandoObject.Prop2 = x["excelCol2"],
ExpandoObject.Prop3 = x["excelCol3"],
ExpandoObject.Prop4 = x["excelCol4"],
ExpandoObject.Prop5 = DateTime.Now
}).ToList();
您想使用 LinqToExcel.Row class。这是文档中分享如何使用它的部分:
使用 LinqToExcel.Row class
查询结果可以作为 LinqToExcel.Row 对象返回,这允许您使用字符串索引中的列名访问单元格的值。只需使用不带通用参数的 Worksheet()
方法。
var excel = new ExcelQueryFactory("excelFileName");
var indianaCompanies = from c in excel.Worksheet()
where c["State"] == "IN" || c["Zip"] == "46550"
select c;
LinqToExcel.Row class 允许您使用其 Cast<>()
方法轻松转换单元格的值
var excel = new ExcelQueryFactory("excelFileName");
var largeCompanies = from c in excel.Worksheet()
where c["EmployeeCount"].Cast<int>() > 500
select c;
使用 LinqToExcel,我正在尝试创建一个 objects 的动态列表,该列表具有动态数量的属性(带有值)。本质上,objects的列表应该直接代表Excelsheet的内容。但是,我事先不知道 header 名称或数字列。
下面的代码不起作用,甚至无法编译,但我希望它能展示我正在尝试做的事情。它还缺少一种循环和添加正确数量的属性的方法。属性的名称和数量应来自 headers columnNameList
.
// get the records
var excel = new ExcelQueryFactory(path);
IEnumerable<string> columnNameList = excel.GetColumnNames(mod.SelectedSheet);
var ExpandoObject = (from x in excel.Worksheet(selectedSheet)
select new ExpandoObject()
{
ExpandoObject.Prop1 = x["excelCol1"],
ExpandoObject.Prop2 = x["excelCol2"],
ExpandoObject.Prop3 = x["excelCol3"],
ExpandoObject.Prop4 = x["excelCol4"],
ExpandoObject.Prop5 = DateTime.Now
}).ToList();
您想使用 LinqToExcel.Row class。这是文档中分享如何使用它的部分:
使用 LinqToExcel.Row class
查询结果可以作为 LinqToExcel.Row 对象返回,这允许您使用字符串索引中的列名访问单元格的值。只需使用不带通用参数的 Worksheet()
方法。
var excel = new ExcelQueryFactory("excelFileName");
var indianaCompanies = from c in excel.Worksheet()
where c["State"] == "IN" || c["Zip"] == "46550"
select c;
LinqToExcel.Row class 允许您使用其 Cast<>()
方法轻松转换单元格的值
var excel = new ExcelQueryFactory("excelFileName");
var largeCompanies = from c in excel.Worksheet()
where c["EmployeeCount"].Cast<int>() > 500
select c;