C#读取多个Excel文件

是否有可能使一个应用程序,从一个文件夹中读取多个Excel文件,并从中提取一些信息?

是的,这是如何使用互操作。 您需要做的第一件事是将Excel Interop库添加到您的项目。 您可以通过创build一个新的Visual Studio解决scheme,右键单击引用 ,select添加引用 ,然后从.NET选项卡中selectMicrosoft.Office.Interop.Excel

然后,您需要为Excel添加一个using语句,另一个用于InteropServices(因为我们正在与COM对象进行交互):

using Excel = Microsoft.Office.Interop.Excel; using System.Runtime.InteropServices; 

然后,在一个方法中,你需要创build一个Application对象:

 Excel.Application application = new Excel.Application(); 

接下来,为每个要读取的工作簿创build一个Workbook对象,如下所示:

 Excel.Workbook workbookOne; Excel.Workbook workbookTwo; Excel.Workbook workbookThree; 

现在使用Application对象打开每个工作簿,并将其加载到其各自的Workbook对象中:

 workbookOne = application.Workbooks.Open(@"C:\workbookOneLocation.xlsx"); workbookTwo = application.Workbooks.Open(@"C:\workbookTwoLocation.xlsx"); workbookThree = application.Workbooks.Open(@"C:\workbookThreeLocation.xlsx"); 

现在你需要决定你想要提取的信息。 一旦你完成了这个决定了工作簿中的工作表,然后通过查看选项卡和计数来计算出数字。 在下面的示例中, Sheet2是数字1, Sheet1是数字2, Sheet3是数字3:

例

为你需要的每一条信息创build一个variables像这样(任何值types的variables将需要为空):

 string firstPieceOfInformationINeed; string[] secondPieceOfInformationINeed; double? thirdPieceOfInformationINeed; 

假设我们需要的第一条信息是单元格A1中工作簿一内的第一张表格中的string,第二张表格是工作表二中的工作表二中的单元格B2 – B4,第三张是工作表上的单元格C5上的一个数字三个内部工作簿三。 我们会这样做:

 string firstPieceOfInformationINeed; string[] secondPieceOfInformationINeed; double? thirdPieceOfInformationINeed; Excel.Worksheet worksheet; Excel.Range range; worksheet = workbookOne.Sheets[1]; range = worksheet.Cells["1", "1"]; firstPieceOfInformationINeed = range.Value as string; worksheet = workbookTwo.Sheets[2]; range = worksheet.Range["B2", "B4"]; secondPieceOfInformationINeed = range.Value as string[]; worksheet = workbookThree.Sheets[3]; range = worksheet.Cells["3", "5"]; thirdPieceOfInformationINeed = range.Value as double?; 

然后我们closures工作簿,使用一个布尔值来指示我们是否要保存更改:

 workbookOne.Close(true); workbookTwo.Close(false); workbookThree.Close(true); 

现在退出应用程序:

 application.Quit(); 

并释放COM对象:

 Marshal.ReleaseComObject(application); 

现在,您已经完成了Excel,并将所需的所有不同信息存储为C#variables,您可以使用这些信息来完成这些任务。

是的,如果你想不使用Excel Interop,你可以使用ClosedXML,但它可以在excel 2007 +中使用。