从C#中的Excel文件中获取行
本文关键字:获取 文件 Excel 中的 | 更新日期: 2023-09-27 17:58:55
我正在阅读C#中的Excel文件。文件中有3张:
- 摘要
- 用户
- 其他
我正在循环浏览汇总表的各个列。(代码如下)
每张纸上都有一列:SummaryID
。
foreach (DataColumn dc in Summary.Columns)
{
foreach (DataRow dr in Summary.AsEnumerable())
{
//get column SummaryID for everyrow
//And then get all rows in Users sheet that match SummaryID
//And then get all rows in Others sheet that match SummaryID
}
}
我的问题是:对于汇总表(SummaryID)中的每一行,我希望获得与"用户"answers"其他人"工作表中的SummaryID匹配的所有匹配行。
注意:列SummaryID
存在于所有3张图纸中,并且是所有图纸中的第一列
我喜欢使用LinqToExcel他们有一个LinqToExcel.Row类,这可能会对你有所帮助,你将在foreach语句上使用linq。
您是否考虑过将Excel工作表视为数据库,并使用OLEDB
或类似技术查询出您想要的数据?
这将是一个简单的Join
查询-可能会更快。。。
您可以使用OleDB来完成此操作。代码与相似
// create a connection to your excel file
// the 8.0 denotes excel 2003
// you will need to use the right number for your version of excel
OleDbConnection con = new OleDbConnection( @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=InsertYourFile.xls"; Extended Properties=Excel 8.0" );
// create a new blank datatableDataTable
dtSheets = new DataTable();
// create a data adapter to select everything from the worksheet you want
OleDbDataAdapter da = new OleDbDataAdapter( "select * from [YourWorksheetName$] WHERE BLAH, etc", con );
// use the data adapter to fill the datatable
da.Fill( dtSheets );