2013-02-15 3 views
1

Как создать именованный лист без заголовков - точно так же, как лист по умолчанию - через ace.oledb?Создать лист в книгу без заголовков ace.oledb

Команда создания для листа должно быть что-то вроде:

CREATE TABLE [MySheet] (field1 type, field2 type ..., fieldn type) 

Это создает MySheet и всегда вставлять (независимо от HDR расширенного свойства в строке подключения или настройки FirstRowHasNames реестра) первую строку в MySheet, содержащий field1 , field2 ... fieldn

В принципе, мне не нужен «Заголовок таблицы», мне просто нужно вставить значения во вновь созданный именованный пустой лист.

+0

«HDR» - это все, что вам нужно изменить, чтобы этого не произошло - я делал это бесчисленное количество раз. Можете ли вы опубликовать свою строку подключения? –

+0

http://www.mikesknowledgebase.com/pages/SQLServer/ImportExcelIntoSQLServer.htm –

+0

oleDbConnection.ConnectionString = @ "Provider = Microsoft.ACE.OLEDB.12.0; Источник данных = d: \ NewExcelFile.xlsx; Расширенные свойства =" «Excel 12.0 Xml; HDR = NO» ";"; Пробовал также HDR = ДА - Я уже заявил, что в моем посте - с и без FirstRowHasNames установлено 0 в реестре ... – ripahoratiu

ответ

0

Это не очень, но это единственный способ найти новый рабочий лист, в котором ничего нет. Единственная проблема, которую я обнаружил, заключается в том, что Oledb автоматически создает именованный диапазон в ячейках заголовка, указанных в команде CREATE, но предполагая, что вас это не волнует, тогда это должно работать нормально.

string connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + fileName + 
    ";Mode=ReadWrite;Extended Properties=\"Excel 12.0 XML;HDR=NO\""; 

using (OleDbConnection conn = new OleDbConnection(connectionString)) 
{ 
    conn.Open(); 

    using (OleDbCommand cmd = new OleDbCommand()) 
    { 
     cmd.Connection = conn; 
     cmd.CommandText = "CREATE TABLE [MySheet] (a string)"; // Doesn't matter what the field is called 
     cmd.ExecuteNonQuery(); 

     cmd.CommandText = "UPDATE [MySheet$] SET F1 = \"\""; 
     cmd.ExecuteNonQuery(); 
    } 

    conn.Close(); 
} 
+0

Грязные, но работает. Благодарю. – ripahoratiu

Смежные вопросы