Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在C中从Excel文件中获取行_C#_Excel - Fatal编程技术网

C# 在C中从Excel文件中获取行

C# 在C中从Excel文件中获取行,c#,excel,C#,Excel,我正在阅读C语言的Excel文件。文件中有3张表格: 总结 使用者 其他 我在下面的Summary sheet.code列中循环 每个工作表中都有一列:SummaryID foreach (DataColumn dc in Summary.Columns) { foreach (DataRow dr in Summary.AsEnumerable()) { //get column SummaryID for everyrow //And then get al

我正在阅读C语言的Excel文件。文件中有3张表格:

总结 使用者 其他 我在下面的Summary sheet.code列中循环

每个工作表中都有一列: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中的everyrow,我希望获得与“用户”和“其他人”工作表中的摘要ID匹配的所有匹配行


注意:列SummaryID存在于所有3张工作表中,并且是所有工作表中的第一列。

您是否考虑过将Excel工作表视为数据库,并使用OLEDB或类似技术查询出所需的数据


此时这将是一个简单的连接查询-可能更快…

我喜欢使用它们有一个LinqToExcel.Row类,这可能会对您有所帮助,您将使用linq over foreach语句

您可以使用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 );

我确信应该有一种方法可以简单地得到整行。我的问题是:对于摘要工作表SummaryID中的everyrow,我希望获得与“用户”和“其他人”工作表中的摘要ID匹配的所有匹配行。注意:列SummaryID存在于所有3张工作表中,并且是所有工作表中的第一列。。。。我不确定你的意思是什么,但我仍然相信最快的方法是将Excel文件视为一个数据库-如果你希望每个工作表中的数据分开,你只需从汇总表中选择不同的SummaryID,然后从该列表中SummaryID所在的其他两个工作表中选择*即可。你完了!你的问题是什么。。你发表了一个声明,而不是一个问题。。您应该询问如何基于SummaryID获取匹配行这是一个正确的假设吗。。?你能展示一下你是如何连接到Excel电子表格的吗。。?您是否有声明Excel应用程序实例的现有代码?Justin能否为我的问题提供一个示例。您应该能够使用正确的内部联接创建SQL,并获得相同的结果。请参阅