C#选择多个文件导入
时间: 2023-07-01 20:12:37 浏览: 56
你可以使用 OpenFileDialog 控件来实现在 C# 中选择多个文件导入的功能。以下是示例代码:
```
OpenFileDialog openFileDialog = new OpenFileDialog();
openFileDialog.Multiselect = true;
openFileDialog.Filter = "Text files (*.txt)|*.txt|All files (*.*)|*.*";
if (openFileDialog.ShowDialog() == DialogResult.OK)
{
foreach (string fileName in openFileDialog.FileNames)
{
// 处理每个选中的文件
}
}
```
在上面的代码中,设置了 Multiselect 属性为 true,可以允许用户选择多个文件。设置了 Filter 属性来限制文件类型,只能选择文本文件或者所有文件。在 ShowDialog() 方法返回 DialogResult.OK 后,可以通过 openFileDialog.FileNames 属性来获取选中的所有文件的文件名。然后,可以使用 foreach 循环来处理每个选中的文件。
相关问题
C# winform 多个excel导入datagridview
可以通过使用 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 控件中显示。
c# 将excel文件多个sheet导入数据库
可以使用 C# 中的 OleDbConnection 和 OleDbDataAdapter 类来读取 Excel 文件的多个 sheet,并将数据导入到数据库中。以下是一段示例代码:
```csharp
string connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=<Excel文件路径>;Extended Properties='Excel 12.0;HDR=YES;IMEX=1;'";
OleDbConnection connection = new OleDbConnection(connectionString);
connection.Open();
DataTable sheets = connection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
foreach (DataRow sheet in sheets.Rows)
{
string sheetName = sheet["TABLE_NAME"].ToString();
OleDbDataAdapter adapter = new OleDbDataAdapter("SELECT * FROM [" + sheetName + "]", connection);
DataTable data = new DataTable();
adapter.Fill(data);
// 将 data 中的数据导入到数据库中
// ...
}
connection.Close();
```
需要注意的是,Excel 文件路径需要根据实际情况进行替换,同时需要保证 Excel 文件中的 sheet 名称与数据库表名一致。另外,代码中的导入数据库部分需要根据实际情况进行修改。