2013-02-15 2 views
1

기본 시트와 마찬가지로 헤더없이 이름이 지정된 시트를 ace.oledb를 통해 어떻게 만들 수 있습니까? 그것은하여 MySheet를 만들고 항상하여 MySheet 포함하는 필드 1에서 첫 번째 줄 (연결 문자열 또는 FirstRowHasNames 설정을 레지스트리에 관계없이 HDR 확장 속성의) 삽입헤더없이 통합 문서에 시트 만들기 ace.oledb

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

: 뭔가처럼

시트의 생성 명령이 있어야합니다 , field2 ... fieldn

기본적으로 나는 "Table Header"를 원하지 않습니다. 새로 만든 이름이 지정된 빈 시트에 값을 삽입하면됩니다.

+0

'HDR'은 이러한 일이 발생하지 않도록 변경해야하는 모든 것입니다. 연결 문자열을 게시 할 수 있습니까 ?? –

+0

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

+0

oleDbConnection.ConnectionString = @ "공급자 = Microsoft.ACE.OLEDB.12.0; 데이터 원본 = d : \ NewExcelFile.xlsx; 확장 속성 =" "Excel 12.0 Xml, HDR = 아니오" ";"; 또한 HDR = YES로 시도했습니다. - 이미 내 게시물에 - 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

관련 문제