C#编程:如何将Excel数据加载到二维数组

4星 · 超过85%的资源 需积分: 50 214 下载量 113 浏览量 更新于2024-11-29 3 收藏 1KB TXT 举报
"这篇内容主要介绍了如何在C#中将Excel表格的数据读取到二维数组中,使用了ADO.NET的OleDbConnection和OleDbDataAdapter来实现这一操作。" 在C#编程中,处理Excel文件是常见的任务之一,尤其是在数据导入、导出或分析时。本示例提供了一种方法,通过ADO.NET接口从Excel文件读取数据并将其存储到二维数组中。下面将详细解释这个过程: 首先,我们需要打开一个`OpenFileDialog`,让用户选择Excel文件。在示例中,`openFileDialog1.ShowDialog()`用于显示对话框,用户从中选择文件,然后将选中的文件名存储在`MyFileName`变量中。 ```csharp openFileDialog1.ShowDialog(); string MyFileName = openFileDialog1.FileName; ``` 如果用户没有选择任何文件,`MyFileName.Trim() == ""`会检查文件路径是否为空,如果是,则返回,避免执行后续操作。 接下来,构建一个连接字符串(`strCon`),用于连接到Excel文件。这里使用的是“Microsoft.Jet.OLEDB.4.0”提供程序,适用于较旧版本的Excel文件(.xls)。对于Excel 2007及更高版本的.xlsx文件,应使用“Microsoft.ACE.OLEDB.12.0”。 ```csharp string strCon = "Provider=Microsoft.Jet.OLEDB.4.0;DataSource=" + MyFilePath + ";ExtendedProperties=Excel8.0;"; ``` 创建`OleDbConnection`对象,使用前面构造的连接字符串,并打开连接。 ```csharp OleDbConnection myConn = new OleDbConnection(strCon); myConn.Open(); ``` 定义SQL查询语句(`strCom`),选取`Sheet1`中的所有列。 ```csharp string strCom = "SELECT * FROM [Sheet1$]"; ``` 然后,创建一个`OleDbDataAdapter`实例,用于执行查询并将结果填充到`DataSet`中。 ```csharp OleDbDataAdapter myCommand = new OleDbDataAdapter(strCom, myConn); DataSet myDataSet = new DataSet(); myCommand.Fill(myDataSet, "[Sheet1$]"); ``` 关闭数据库连接。 ```csharp myConn.Close(); ``` 从`DataSet`的表中获取数据,即Excel的`Sheet1`,并将其存储在`ExcelTable`中。 ```csharp DataTable ExcelTable = myDataSet.Tables[0]; ``` 计算行数(`iRows`)和列数(`iColums`),用于初始化二维数组。 ```csharp int iRows = ExcelTable.Rows.Count; int iColums = ExcelTable.Columns.Count; string[,] StoreData = new string[iRows, iColums]; ``` 最后,遍历`DataTable`的每一行和每一列,将单元格中的数据转换为字符串并存储到二维数组`StoreData`中。 ```csharp for (int i = 0; i < ExcelTable.Rows.Count; i++) for (int j = 0; j < ExcelTable.Columns.Count; j++) StoreData[i, j] = ExcelTable.Rows[i][j].ToString(); ``` 这个过程总结了如何在C#中使用ADO.NET从Excel文件读取数据并存储到二维数组中。这种方法简单实用,尤其适合处理小规模数据。然而,对于大量数据或者频繁操作,可能需要考虑更高效的方法,如使用EPPlus库,它专门针对.NET平台设计,处理Excel文件效率更高。