c# datagridview使用FileDialog 的方法读取写入excel
时间: 2024-04-22 22:24:30 浏览: 229
c# datagridview和excel数据的相互导入方法
你可以使用 C# 的 DataGridView 控件与 OpenFileDialog 组件来读取和写入 Excel 文件。
首先,你需要引入以下命名空间:
```csharp
using System;
using System.Data;
using System.Windows.Forms;
using System.IO;
using Excel = Microsoft.Office.Interop.Excel;
```
然后,你可以创建一个方法来加载 Excel 文件到 DataGridView 中:
```csharp
private void LoadExcelToDataGridView()
{
OpenFileDialog openFileDialog = new OpenFileDialog();
openFileDialog.Filter = "Excel Files|*.xls;*.xlsx;*.xlsm";
if (openFileDialog.ShowDialog() == DialogResult.OK)
{
string filePath = openFileDialog.FileName;
Excel.Application excelApp = new Excel.Application();
Excel.Workbook workbook = excelApp.Workbooks.Open(filePath);
Excel.Worksheet worksheet = workbook.ActiveSheet;
DataTable dt = new DataTable();
for (int i = 1; i <= worksheet.UsedRange.Columns.Count; i++)
{
dt.Columns.Add("Column " + i.ToString());
}
for (int row = 1; row <= worksheet.UsedRange.Rows.Count; row++)
{
DataRow dr = dt.NewRow();
for (int col = 1; col <= worksheet.UsedRange.Columns.Count; col++)
{
dr[col - 1] = worksheet.Cells[row, col].Value;
}
dt.Rows.Add(dr);
}
dataGridView.DataSource = dt;
workbook.Close();
excelApp.Quit();
}
}
```
上述代码中,我们使用了 Microsoft.Office.Interop.Excel 库来读取 Excel 文件并将其数据加载到 DataTable 中。然后,我们将 DataTable 设置为 DataGridView 的数据源。
接下来,你可以创建一个方法来将 DataGridView 的数据写入到 Excel 文件中:
```csharp
private void SaveDataGridViewToExcel()
{
SaveFileDialog saveFileDialog = new SaveFileDialog();
saveFileDialog.Filter = "Excel Files|*.xls;*.xlsx;*.xlsm";
if (saveFileDialog.ShowDialog() == DialogResult.OK)
{
string filePath = saveFileDialog.FileName;
Excel.Application excelApp = new Excel.Application();
Excel.Workbook workbook = excelApp.Workbooks.Add();
Excel.Worksheet worksheet = workbook.ActiveSheet;
for (int col = 1; col <= dataGridView.Columns.Count; col++)
{
worksheet.Cells[1, col] = dataGridView.Columns[col - 1].HeaderText;
}
for (int row = 1; row <= dataGridView.Rows.Count; row++)
{
for (int col = 1; col <= dataGridView.Columns.Count; col++)
{
worksheet.Cells[row + 1, col] = dataGridView.Rows[row - 1].Cells[col - 1].Value;
}
}
workbook.SaveAs(filePath);
workbook.Close();
excelApp.Quit();
}
}
```
在上述代码中,我们使用了 Microsoft.Office.Interop.Excel 库来创建一个新的 Excel 文件,并将 DataGridView 的数据写入到该文件中。
最后,你可以在你的按钮点击事件中调用这两个方法:
```csharp
private void btnLoad_Click(object sender, EventArgs e)
{
LoadExcelToDataGridView();
}
private void btnSave_Click(object sender, EventArgs e)
{
SaveDataGridViewToExcel();
}
```
请注意,为了使用 Microsoft.Office.Interop.Excel 库,你需要在项目中添加对 "Microsoft.Office.Interop.Excel" 的引用,并确保你的机器上已安装了 Microsoft Office。
希望这可以帮助到你!如果你有任何问题,请随时询问。
阅读全文