Использование OleDb для вставки данных в Excel 2007 в C # - PullRequest
5 голосов
/ 18 января 2011

Я использовал в качестве базы для того, что я хочу сделать на этом сайте: http://www.codeproject.com/script/Articles/ViewDownloads.aspx?aid=8500

Итак, в основном я хочу использовать OleDb в моем приложении на C # Windows для добавления некоторых данных в определенные ячейки в моей существующей электронной таблице Excel. Все примеры, которые я нахожу, хотят, чтобы у меня был какой-то тип ячеек заголовка. Например, если в моей ячейке «А1» есть «Заголовок», я мог бы использовать:

"INSERT INTO [SHEET1$] (Title) Values ('Book')"  

Проблема в том, что в моей электронной таблице Excel нет заголовка. Что мне нужно сделать, это:

"INSERT INTO [SHEET1$] (A15) Values ('Book')".

Может ли кто-нибудь помочь мне понять, как поместить данные в определенные ячейки вокруг моей электронной таблицы?

Ответы [ 3 ]

6 голосов
/ 29 июня 2011

Если вы все еще заинтересованы,

Нет реального способа указать ячейку для записи с помощью команды вставки OleDb, OleDbCommand автоматически перейдет к следующей открытой строке в указанном столбце.Однако вы можете использовать запрос на обновление, например:

sql = "Update [Sheet1$A1:A15] SET A15 = 'DesiredNumber'"; 
myCommand.CommandText = sql;
myCommand.ExecuteNonQuery();

Это должно работать, если вы определили:

System.Data.OleDb.OleDbConnection MyConnection;
System.Data.OleDb.OleDbCommand myCommand = new System.Data.OleDb.OleDbCommand();
string sql = null;
MyConnection = new System.Data.OleDb.OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0;Data Source='c:\\Example.xls';Extended Properties=Excel 8.0;");
MyConnection.Open();
myCommand.Connection = MyConnection;
4 голосов
/ 18 января 2011

См. Как использовать ADO.NET для извлечения и изменения записей в книге Excel с Visual Basic .NET в http://support.microsoft.com/kb/316934.

Соглашения об именах таблиц

Существует несколько способов ссылки на таблицу (или диапазон) в книге Excel:

  • Используйте имя листа, за которым следует знак доллара (например, [Sheet1 $] или [My Worksheet $]). Таблица рабочей книги, на которую ссылаются таким образом, включает весь используемый диапазон рабочей таблицы.

    Select * from [Sheet1$] 
    
  • Использовать диапазон с определенным именем (например, [MyNamedRange]):

    Select * from [MyNamedRange] 
    
  • Используйте диапазон с определенным адресом (например, [Лист1 $ A1: B10]):

    Select * from [Sheet1$A1:B10] 
    

Вставлено с http://support.microsoft.com/kb/316934

0 голосов
/ 18 января 2011

Я предполагаю, что вы используете стандартные COM-объекты MS-Excel для взаимодействия с файлом Excel.Вы можете попробовать использовать драйверы ODBC системного уровня для взаимодействия с файлом Excel.При использовании этого в зависимости от наличия или отсутствия заголовков, вам необходимо указать то же самое в строке oledbConnection, после чего вы можете напрямую вводить значения в любую ячейку, какую хотите.

...