C# winform 获取Excel中多个sheet选择指定的sheet入库
时间: 2023-08-31 07:06:08 浏览: 207
你可以使用`OleDb`提供程序来连接Excel文件,并使用`SELECT`语句来获取Excel中的数据。以下是一个示例代码:
```csharp
using System.Data;
using System.Data.OleDb;
using System.Windows.Forms;
// 定义Excel文件路径
string filePath = @"C:\YourExcelFile.xlsx";
// 定义Excel连接字符串
string connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filePath + ";Extended Properties='Excel 12.0;HDR=YES;IMEX=1;'";
// 创建OleDbConnection对象
using (OleDbConnection connection = new OleDbConnection(connectionString))
{
// 打开Excel连接
connection.Open();
// 获取Excel文件中所有Sheet的名称
DataTable sheetTable = connection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
// 显示Sheet选择对话框,让用户选择要导入的Sheet
using (SheetSelectionDialog dialog = new SheetSelectionDialog())
{
foreach (DataRow row in sheetTable.Rows)
{
string sheetName = row["TABLE_NAME"].ToString();
dialog.AddSheet(sheetName);
}
if (dialog.ShowDialog() == DialogResult.OK)
{
// 选中的Sheet名称
string sheetName = dialog.SelectedSheet;
// 读取选中的Sheet中的数据
string query = "SELECT * FROM [" + sheetName + "]";
OleDbDataAdapter adapter = new OleDbDataAdapter(query, connection);
DataTable table = new DataTable();
adapter.Fill(table);
// 将数据插入到数据库中
using (SqlConnection sqlConnection = new SqlConnection("Data Source=YourServerName;Initial Catalog=YourDatabaseName;Integrated Security=True"))
{
string sql = "INSERT INTO YourTableName (Column1, Column2, ...) VALUES (@Column1, @Column2, ...)";
using (SqlCommand command = new SqlCommand(sql, sqlConnection))
{
// 遍历Excel中的每一行,执行插入操作
foreach (DataRow row in table.Rows)
{
command.Parameters.Clear();
command.Parameters.AddWithValue("@Column1", row["Column1"]);
command.Parameters.AddWithValue("@Column2", row["Column2"]);
// 添加更多的参数
// ...
sqlConnection.Open();
command.ExecuteNonQuery();
sqlConnection.Close();
}
}
}
}
}
// 关闭OleDbConnection对象
connection.Close();
}
```
在上面的代码中,我们首先使用`OleDbConnection`对象打开Excel文件,并获取Excel文件中所有Sheet的名称。然后,我们使用自定义的Sheet选择对话框,让用户选择要导入的Sheet。一旦用户选择了Sheet,我们使用`OleDbDataAdapter`对象读取选中的Sheet中的数据,并将数据插入到数据库中。注意,你需要根据实际情况修改连接字符串、SQL语句、数据表名称和列名等。同时,你需要定义一个`SheetSelectionDialog`类来显示Sheet选择对话框,你可以使用ListBox或者ComboBox等控件来显示Sheet列表。
阅读全文