我需要以编程方式多次向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
我希望能够以类似的方式插入一行。这可能吗?
答案 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就是一个例子:
使用OfficeWriter打开工作簿后,可以在Worksheet类上使用此方法来插入行。它模仿Excel的行为,包括更新/拉伸公式和其他更新:
public void InsertRows(int rowNumber, int rowCount)