2013-02-15 48 views
1

如何通过ace.oledb创建没有标题的命名工作表 - 就像默认工作表一样?在没有页眉的情况下将工作表创建为工作簿ace.oledb

用于将片状的创建命令必须是这样的:

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

它创建MySheet的工作,总是插入(无论HDR扩展属性的连接字符串或注册表设置FirstRowHasNames)在含有MySheet的工作field1的第一线,field2 ... fieldn

基本上我不想要一个“表头”那里,我只需要在新创建的命名空白表中插入值。

+0

HDR是你不得不为改变而发生的变化 - 我以前做过无数次。你能发布你的连接字符串吗? – 2013-02-15 16:21:19

+0

http://www.mikesknowledgebase.com/pages/SQLServer/ImportExcelIntoSQLServer.htm – 2013-02-15 16:22:24

+0

oleDbConnection.ConnectionString = @“Provider = Microsoft.ACE.OLEDB.12.0; Data Source = d:\ NewExcelFile.xlsx; Extended Properties =” “Excel 12.0 Xml; HDR = NO”“;”; 也尝试过HDR = YES - 我已经说过,在我的文章中 - FirstRowHasNames和FirstRowHasNames在注册表中设置为0 ... – ripahoratiu 2013-02-16 09:33:11

回答

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 2013-02-20 08:38:18

相关问题