C#编程:如何将Excel数据加载到二维数组
4星 · 超过85%的资源 需积分: 50 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文件效率更高。
点击了解资源详情
点击了解资源详情
点击了解资源详情
2017-03-17 上传
2015-12-30 上传
2015-08-25 上传
点击了解资源详情
点击了解资源详情
点击了解资源详情
xiaogang_150
- 粉丝: 5
- 资源: 9
最新资源
- C语言数组操作:高度检查器编程实践
- 基于Swift开发的嘉定单车LBS iOS应用项目解析
- 钗头凤声乐表演的二度创作分析报告
- 分布式数据库特训营全套教程资料
- JavaScript开发者Robert Bindar的博客平台
- MATLAB投影寻踪代码教程及文件解压缩指南
- HTML5拖放实现的RPSLS游戏教程
- HT://Dig引擎接口,Ampoliros开源模块应用
- 全面探测服务器性能与PHP环境的iprober PHP探针v0.024
- 新版提醒应用v2:基于MongoDB的数据存储
- 《我的世界》东方大陆1.12.2材质包深度体验
- Hypercore Promisifier: JavaScript中的回调转换为Promise包装器
- 探索开源项目Artifice:Slyme脚本与技巧游戏
- Matlab机器人学习代码解析与笔记分享
- 查尔默斯大学计算物理作业HP2解析
- GitHub问题管理新工具:GIRA-crx插件介绍