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

我需要以编程方式多次插入一个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 

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

一目了然,你需要指定读写,默认是只读的。 也许:“Provider = Microsoft.Jet.OLEDB.4.0;” &_“Data Source = C:\ Docs \ Test.xls;” &_“Mode = ReadWrite; Extended Properties =”“Excel 8.0; HDR = No”“”

再看一眼,我认为Interop可能是最好的select。

ipavlic是正确的,你会更好使用这个外部的第三方库。 有几个可用。 OfficeWriter就是一个例子:

http://www.officewriter.com

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

 public void InsertRows(int rowNumber, int rowCount)