2

ace.oledbを使用して、ヘッダーのない名前付きシートを(デフォルトのシートと同じように)作成するにはどうすればよいですか?

シートの作成コマンドは次のようにする必要があります。

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

MySheetを作成し、field1、field2 ... fieldnを含むMySheetの最初の行を常に挿入します(接続文字列のHDR拡張プロパティまたはレジストリ設定FirstRowHasNamesに関係なく)

基本的に、そこに「テーブルヘッダー」は必要ありません。新しく作成された名前付きの空のシートに、値を挿入するだけです。

4

1 に答える 1

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();
}
于 2013-02-17T21:36:16.523 に答える