C# winform 多个excel导入datagridview
时间: 2023-07-11 07:05:18 浏览: 106
可以通过使用 Microsoft.Office.Interop.Excel 库来实现在 C# Winform 中导入多个 Excel 文件到 DataGridView 控件中。
以下是一个简单的示例代码,可以实现将多个 Excel 文件的数据导入到一个 DataGridView 中:
```csharp
using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Runtime.InteropServices;
using System.Windows.Forms;
using Excel = Microsoft.Office.Interop.Excel;
namespace ExcelToDataGridView
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void btnImport_Click(object sender, EventArgs e)
{
OpenFileDialog openFileDialog = new OpenFileDialog();
openFileDialog.Multiselect = true;
openFileDialog.Filter = "Excel Files|*.xls;*.xlsx;*.xlsm";
if (openFileDialog.ShowDialog() == DialogResult.OK)
{
List<DataTable> dataTables = new List<DataTable>();
foreach (string fileName in openFileDialog.FileNames)
{
DataTable dataTable = ReadExcelFile(fileName);
dataTables.Add(dataTable);
}
dataGridView1.DataSource = MergeDataTables(dataTables);
}
}
private DataTable ReadExcelFile(string fileName)
{
Excel.Application excelApp = new Excel.Application();
Excel.Workbook workbook = null;
Excel.Worksheet worksheet = null;
DataTable dataTable = new DataTable();
try
{
workbook = excelApp.Workbooks.Open(fileName);
worksheet = workbook.Sheets[1];
int rowCount = worksheet.UsedRange.Rows.Count;
int colCount = worksheet.UsedRange.Columns.Count;
for (int i = 1; i <= colCount; i++)
{
Excel.Range range = worksheet.Cells[1, i];
dataTable.Columns.Add(range.Value.ToString());
}
for (int i = 2; i <= rowCount; i++)
{
DataRow dataRow = dataTable.NewRow();
for (int j = 1; j <= colCount; j++)
{
Excel.Range range = worksheet.Cells[i, j];
dataRow[j - 1] = range.Value != null ? range.Value.ToString() : "";
}
dataTable.Rows.Add(dataRow);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
if (worksheet != null) Marshal.ReleaseComObject(worksheet);
if (workbook != null) workbook.Close();
if (excelApp != null) excelApp.Quit();
Marshal.ReleaseComObject(excelApp);
}
return dataTable;
}
private DataTable MergeDataTables(List<DataTable> dataTables)
{
DataTable mergedDataTable = new DataTable();
foreach (DataTable dataTable in dataTables)
{
mergedDataTable.Merge(dataTable);
}
return mergedDataTable;
}
}
}
```
在上述代码中,通过 OpenFileDialog 对话框选择多个 Excel 文件后,分别通过 ReadExcelFile 方法读取每个 Excel 文件中的数据,然后将读取的数据通过 MergeDataTables 方法合并成一个 DataTable,并绑定到 DataGridView 控件中显示。