更新时间:2022-01-09 22:11:16
使用ADO.NET易行添加到一个Excel工作表
Using ADO.NET is easy to add a row to an Excel Sheet
string fileName = @"D:\test.xlsx";
string connectionString = String.Format(@"Provider=Microsoft.ACE.OLEDB.12.0;" +
"Data Source={0};Extended Properties='Excel 12.0;HDR=YES;IMEX=0'", fileName);
using(OleDbConnection cn = new OleDbConnection(connectionString))
{
cn.Open();
OleDbCommand cmd1 = new OleDbCommand("INSERT INTO [Sheet1$] " +
"([Column1],[Column2],[Column3],[Column4]) " +
"VALUES(@value1, @value2, @value3, @value4)", cn);
cmd1.Parameters.AddWithValue("@value1", "Key1");
cmd1.Parameters.AddWithValue("@value2", "Sample1");
cmd1.Parameters.AddWithValue("@value3", 1);
cmd1.Parameters.AddWithValue("@value4", 9);
cmd1.ExecuteNonQuery();
}
在code以上假设你有一个第一行与列1列名的头......。 此外,code使用ACE OLEDB提供Excel中,而不是Microsoft.Jet.OleDb.4.0 2007年或2010年。
The code above assumes that you have a first row with an header with Column1... as column names. Also, the code use the ACE OleDB provider for Excel 2007 or 2010 instead of Microsoft.Jet.OleDb.4.0.
编辑:要引用一个命名范围,你可以更改SQL命令,这一个
To refer to a Named Range you could change the sql command to this one
OleDbCommand cmd1 = new OleDbCommand("INSERT INTO [yourNamedRange] " +
"VALUES(@value1, @value2, @value3, @value4)", cn);
唉,我无法找到一个方法来引用单个列。
Alas, I can't find a way to refer to the individual columns.