Вставка строки в электронную таблицу Excel через C # и OleDb - PullRequest
3 голосов
/ 20 января 2012

Мне нужно программно вставить строку в таблицу 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 ]

2 голосов
/ 20 января 2012

На первый взгляд необходимо указать чтение и запись, по умолчанию используется только чтение. Может быть: "Provider = Microsoft.Jet.OLEDB.4.0;" & _ "Источник данных = C: \ Docs \ Test.xls;" & _ "Mode = ReadWrite; Расширенные свойства =" "Excel 8.0; HDR = Нет" ""

На второй взгляд и комментарии я думаю, что Interop может быть лучшей ставкой.

0 голосов
/ 20 января 2012

ipavlic прав, вам лучше использовать для этого стороннюю стороннюю библиотеку. Есть несколько доступных. OfficeWriter является одним из примеров:

http://www.officewriter.com

После открытия книги с помощью OfficeWriter вы можете использовать этот метод в классе Worksheet для вставки строк. Он имитирует поведение Excel, включая обновление / растяжение формул и другие обновления:

public void InsertRows(int rowNumber, int rowCount)
...