winform选择excel文件时,combox可以获取文件中的sheet,我们选中某一个sheet,可以吧选中sheet的数据导入到数据库中
时间: 2024-01-24 11:01:35 浏览: 79
您可以使用以下步骤将选中的 Excel 文件的特定工作表数据导入到数据库中:
1. 使用 OpenFileDialog 控件让用户选择要导入的 Excel 文件。
2. 一旦用户选择了文件,您可以使用 Excel Interop 或者其他第三方库(如 EPPlus)来读取 Excel 文件的内容。下面是使用 Excel Interop 的示例代码:
```csharp
using System;
using System.Data;
using System.Data.OleDb;
using System.Windows.Forms;
// OpenFileDialog 控件用于选择 Excel 文件
OpenFileDialog openFileDialog = new OpenFileDialog();
openFileDialog.Filter = "Excel Files|*.xls;*.xlsx;*.xlsm";
if (openFileDialog.ShowDialog() == DialogResult.OK)
{
// 获取选中的文件路径
string filePath = openFileDialog.FileName;
// 使用 OleDb 连接字符串连接到 Excel 文件
string connectionString = $"Provider=Microsoft.ACE.OLEDB.12.0;Data Source={filePath};Extended Properties='Excel 12.0;HDR=YES;IMEX=1;';";
using (OleDbConnection connection = new OleDbConnection(connectionString))
{
connection.Open();
// 获取所有工作表名称
DataTable schemaTable = connection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
if (schemaTable != null)
{
// 在 ComboBox 中显示工作表名称
foreach (DataRow row in schemaTable.Rows)
{
string sheetName = row["TABLE_NAME"].ToString();
comboBox.Items.Add(sheetName);
}
}
connection.Close();
}
}
```
3. 当用户选择了要导入的工作表后,您可以使用相同的 OleDb 连接字符串来获取选定工作表的数据。假设用户选择了名为 "Sheet1$" 的工作表,使用以下代码将数据导入到数据库中:
```csharp
string selectedSheet = comboBox.SelectedItem.ToString();
// 使用 OleDbDataAdapter 读取选中工作表的数据
string selectQuery = $"SELECT * FROM [{selectedSheet}]";
using (OleDbDataAdapter adapter = new OleDbDataAdapter(selectQuery, connectionString))
{
DataTable dataTable = new DataTable();
adapter.Fill(dataTable);
// 连接到数据库并将数据导入到相应的表中
// 这里的代码将根据您使用的数据库类型而有所不同
// 以下是示例代码,假设您使用 SQL Server 数据库
string connectionStringDB = "Data Source=your_server;Initial Catalog=your_database;User ID=your_username;Password=your_password;";
using (SqlConnection connectionDB = new SqlConnection(connectionStringDB))
{
connectionDB.Open();
// 将 DataTable 中的数据导入到数据库中
using (SqlBulkCopy bulkCopy = new SqlBulkCopy(connectionDB))
{
bulkCopy.DestinationTableName = "your_table";
bulkCopy.WriteToServer(dataTable);
}
connectionDB.Close();
}
}
```
请注意,上述代码仅提供了一个基本的示例,具体的实现可能需要根据您的需求进行修改。另外,如果您选择使用 EPPlus 或其他库来读取 Excel 文件,代码会有所不同。
阅读全文