在没有标题ace.oledb的工作簿中创建工作表

时间:2013-02-15 15:57:24

标签: c# excel oledb ado

如何创建没有标题的命名工作表 - 就像默认工作表一样 - 通过ace.oledb?

工作表的create命令必须类似于:

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

它创建MySheet并始终插入(无论连接字符串中的HDR扩展属性或注册表设置FirstRowHasNames)MySheet中包含field1的第一行,field2 ... fieldn

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

1 个答案:

答案 0 :(得分:2)

这不是很好,但这是我发现创建一个没有任何内容的新工作表的唯一方法。我发现的唯一问题是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] (<colname> <col type>)";  // Doesn't matter what the field is called
        cmd.ExecuteNonQuery();

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

    conn.Close();
}