C# 读写excel文件代码讲解
时间: 2023-08-20 18:05:18 浏览: 195
c# 读写 Excel 代码
好的,以下是C#读写Excel文件的代码讲解:
读取Excel文件:
```csharp
using System.Data;
using System.Data.OleDb;
public void ReadExcelFile(string filePath)
{
string connStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filePath + ";Extended Properties='Excel 12.0;HDR=YES;IMEX=1';";
OleDbConnection conn = new OleDbConnection(connStr);
conn.Open();
DataTable dt = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
string sheetName = dt.Rows[0]["TABLE_NAME"].ToString();
string query = "SELECT * FROM [" + sheetName + "]";
OleDbDataAdapter adapter = new OleDbDataAdapter(query, conn);
DataSet ds = new DataSet();
adapter.Fill(ds);
conn.Close();
DataTable data = ds.Tables[0];
foreach (DataRow row in data.Rows)
{
foreach (DataColumn col in data.Columns)
{
Console.WriteLine(row[col].ToString());
}
}
}
```
以上代码通过OleDb连接字符串连接到Excel文件,使用`GetOleDbSchemaTable`方法获取Excel文件中的表名,然后使用`SELECT * FROM`语句查询该表中的数据。最后使用`OleDbDataAdapter`填充`DataSet`,并遍历`DataTable`输出读取到的数据。
写入Excel文件:
```csharp
public void WriteExcelFile(string filePath)
{
DataTable dt = new DataTable();
dt.Columns.Add("ID", typeof(int));
dt.Columns.Add("Name", typeof(string));
dt.Rows.Add(1, "Tom");
dt.Rows.Add(2, "Jerry");
string connStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filePath + ";Extended Properties='Excel 12.0;HDR=YES;IMEX=1';";
using (OleDbConnection conn = new OleDbConnection(connStr))
{
conn.Open();
string createTableSql = "CREATE TABLE [Sheet1] ([ID] INT, [Name] VARCHAR(50))";
OleDbCommand cmd = new OleDbCommand(createTableSql, conn);
cmd.ExecuteNonQuery();
foreach (DataRow row in dt.Rows)
{
string insertSql = "INSERT INTO [Sheet1] ([ID], [Name]) VALUES (?, ?)";
cmd = new OleDbCommand(insertSql, conn);
cmd.Parameters.AddWithValue("@ID", row["ID"]);
cmd.Parameters.AddWithValue("@Name", row["Name"]);
cmd.ExecuteNonQuery();
}
conn.Close();
}
}
```
以上代码创建一个`DataTable`,并添加两列数据,使用OleDb连接字符串连接到Excel文件,使用`CREATE TABLE`语句创建一个名为`Sheet1`的表,然后遍历`DataTable`,使用`INSERT INTO`语句将数据插入到Excel表中。最后关闭连接。
希望上述代码可以帮助到您。
阅读全文