none
microsoft.ace.oledb.12.0 新しいブックとテーブルの作成について RRS feed

  • 質問

  • ASP.NETで開発しています。

    Excel 2003 のブックファイル内にテーブルを作成する為に、Microsoft.Jet.OLEDB.4.0を利用した場合には

    作成できたのですが、動作環境拡張(64ビット)の為に、Microsoft.ACE.OLEDB.12.0を利用することになりました。

    ところが動作確認したところファイルは作成されるのですが、ファイルを開こうとすると、”このファイルの形式を認識できません”

    のようなメッセージが表示されます。

    色々原因を調べたのですが、解決には至っておりません。

    ご教授お願い致します。

    ソースは以下のように実装しています。

     ※DB接続文字列の設定が”c”の場合にメッセージが表示されます。

                Dim b As String = _
                "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\test.xls;Extended Properties=""Excel 8.0;HDR=YES"""

                Dim c As String = _
                "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\test.xls;Extended Properties=""Excel 12.0;HDR=YES"""


                ' 戻り値
                Dim sbSQL As New StringBuilder

                Using con As New OleDbConnection

                    Try
                        con.ConnectionString = b
                        'con.ConnectionString = c
                        con.Open()

                        'カラム名の設定
                        With sbSQL
                            .Remove(0, .Length)
                            .AppendLine("CREATE TABLE [TABLE] ( ")

                            .AppendLine("ID" & " " & "CHAR(255), ")
                            .AppendLine("CD" & " " & "CHAR(255), ")
                            .AppendLine("USER_ID" & " " & "CHAR(255), ")
                            .AppendLine("FLG" & " " & "CHAR(255) ")

                            .AppendLine(") ")

                        End With

                        Using cmd As New OleDbCommand(sbSQL.ToString, con)
                            cmd.ExecuteNonQuery()
                        End Using

                    Catch ex As Exception
                        Throw New RWException(ex.Message, ex)
                    Finally
                        Try
                            'コネクションの切断
                            con.Close()
                        Catch ex As Exception
                            'コネクションの切断
                            con.Close()
                            Throw New RWException(ex.Message, ex)
                        End Try
                    End Try

                End Using

     

    2012年1月24日 11:34

回答

  • 出来上がったファイルが .xlsx 形式になっているんではないでしょうか。
    拡張子を .xlsx に変更して、Excel 2010 等で開けたりしませんか?

    Excel 2003 形式 (.xls) のファイルを作成するのであれば、Extended Properties には "Excel 8.0" を指定するのではないかと思います。
    試したわけではありませんが。

    • 回答としてマーク yukimai 2012年1月25日 1:07
    2012年1月24日 18:13

すべての返信

  • 出来上がったファイルが .xlsx 形式になっているんではないでしょうか。
    拡張子を .xlsx に変更して、Excel 2010 等で開けたりしませんか?

    Excel 2003 形式 (.xls) のファイルを作成するのであれば、Extended Properties には "Excel 8.0" を指定するのではないかと思います。
    試したわけではありませんが。

    • 回答としてマーク yukimai 2012年1月25日 1:07
    2012年1月24日 18:13
  • totojo様のご指摘通りに"Excel 12.0"から"Excel 8.0" に変更することによって問題は解決しました。

    ありがとうございました。 

    2012年1月25日 1:08
  • > 出来上がったファイルが .xlsx 形式になっているんではないでしょうか。
    > 拡張子を .xlsx に変更して、Excel 2010 等で開けたりしませんか?

    Extended Properties="Excel 12.0" として workbook を作ると xlsb 形式
    (バイナリ形式)になるようです。なので、拡張子を xlsb に変更すれば開
    けると思います(拡張子を xlsx に変更しても開けません)。

    ちなみに、xlsx 形式にするには "Excel 12.0 Xml" とすればよさそうです。

     

    2012年1月25日 13:06