通过C#和OleDb在Excel电子表格中插入一行

时间:2012-01-20 15:58:55

标签: c# excel oledb

我需要以编程方式多次向Excel电子表格中插入一行。我需要实际插入一个新行而不是插入数据,也就是说,我需要将所有其他行向下移动一个。

我目前正在使用OleDB来插入数据本身:

//Note I have missed some code out for simplicities sake, this all works fine however
OleDbConnection oledbConn = null;

OleDbCommand cmd = null;

OleDbConnection = new OleDbConnection(connString);           
OleDbConnection.Open();

string connString = string.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=\"Excel 8.0; \"", TargetFile);

sting InsertCommand = string.Format("INSERT INTO [{0}${1}:{1}] Values({2})", WorksheetName, Coord, valuestring);

cmd = new OleDbCommand(InsertCommand, oledbConn);

cmd.ExecuteNonQuery();

//close etc

我希望能够以类似的方式插入一行。这可能吗?

2 个答案:

答案 0 :(得分:2)

一目了然,您需要指定读写,默认为只读。也许: “提供者= Microsoft.Jet.OLEDB.4.0;” &安培; _ “数据源= C:\ Docs \ Test.xls;” &安培; _ “Mode = ReadWrite; Extended Properties =”“Excel 8.0; HDR = No”“”

乍一看并重新评论,我认为Interop可能是最好的选择。

答案 1 :(得分:0)

ipavlic是对的,你最好使用外部第三方库。有几个可用。 OfficeWriter就是一个例子:

http://www.officewriter.com

使用OfficeWriter打开工作簿后,可以在Worksheet类上使用此方法来插入行。它模仿Excel的行为,包括更新/拉伸公式和其他更新:

public void InsertRows(int rowNumber, int rowCount)