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

"这篇内容主要介绍了如何在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文件效率更高。
695 浏览量
1291 浏览量
点击了解资源详情
163 浏览量
229 浏览量
2015-08-25 上传
点击了解资源详情
625 浏览量
623 浏览量

xiaogang_150
- 粉丝: 5
最新资源
- ASP.NET 2.0配置管理详解
- C++ Primer Plus 第5版编程练习答案解析
- C/C++编程:经典程序源码解析与实现
- UML图形创建指南:从用例图到顺序图
- Oracle9i RMAN备份恢复指南
- 提高Linux效率:精选技巧与管理窍门
- 详解printf格式控制符的完整规则与实例
- Windows下的OpenSSL开发手册
- C/C++面试深度解析:从基础到进阶
- AQTime性能调试工具全面指南
- ARM7TDMI数据手册:嵌入式系统深度解析
- 精通C++:侯捷翻译的《More Effective C++》要点解析
- ArcIMS 9.2安装教程:Java, IIS及环境配置详解
- 优化Oracle 10g DBA工作:系统管理与自动化
- Java初学者指南:JDK与Tomcat环境配置
- Intel 80386程序员手册:汇编学习必备