如何在Windows Form应用中使用C#将Excel数据读取并显示至DataGridView控件,并能实现双向数据流即修改Excel中的数据也能反映到 DataGridView 中?
时间: 2024-10-23 12:19:30 浏览: 44
在Windows Form应用中,使用C#读取Excel文件并将数据展示到DataGridView控件,可以借助Microsoft.Office.Interop.Excel库。以下是步骤:
1. 引入命名空间:
```csharp
using System.Data;
using System.Data.OleDb;
using Microsoft.Office.Interop.Excel;
```
2. 加载Excel工作簿:
```csharp
OleDbConnection excelCon = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=<your_excel_file_path>;Extended Properties='Excel 12.0;HDR=YES'");
excelCon.Open();
```
这里`<your_excel_file_path>`替换为你实际的Excel文件路径,HDR=YES表示列头包含。
3. 获取工作表和数据:
```csharp
string sheetName = "Sheet1"; // 替换为你要读取的工作表名
var excelWorksheet = excelApp.Workbooks.Open(filePath).Sheets(sheetName);
DataTable dataTable = new DataTable();
OleDbCommand cmd = new OleDbCommand("SELECT * FROM [" + sheetName + "$]", excelCon);
cmd.ExecuteNonQuery(); // 这里假设你的数据是一条一条的行
OleDbDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
dataTable.Rows.Add(reader.ItemArray);
}
reader.Close();
```
4. 将DataTable绑定到DataGridView:
```csharp
dataGridView.DataSource = dataTable;
```
现在DataGridView的数据会自动更新了。
5. 实现双向数据流(双向绑定):
- 当用户在DataGridView上编辑单元格时,你需要设置DataGridView的`AllowUserToEditRows`属性为true,同时启用`AutoGenerateColumns`以便它可以根据数据动态创建列。
- 若要保存修改后的数据回Excel,可以在用户触发特定事件(如CellValueChanged、CellValueChanged等)时,更新DataTable并写回到Excel,这需要自定义事件处理程序。
记得在使用完后关闭连接和释放资源:
```csharp
excelWorksheet.Close();
excelCon.Close();
excelApp.Quit();
```
阅读全文