0

アプリケーションをWindowsフォームからWindowsサービスに変更しています。

conn.GetSchema( "Tables")は、2つのコードベースで異なる動作をします。

新しいコードベースでは、Excelワークシートが返されません。conn.GetSchema( "Tables")。Rows.Countは0です。すべての参照を再確認しましたが、何も違いはありません。私のコードには、この効果があると思われる他の違いは見つかりません。何かアイデアや他に何を探すことができますか?

これが私の完全な機能です(ええ、私はFor Eachを使用する必要があることを知っています):

Private Function GetWorksheets(FileName As String) As String()

    Dim rv As List(Of String)
    Dim conn = New OleDb.OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0;data source=" & FileName & ";Extended Properties=Excel 8.0;")

    conn.Open()
    For x As Integer = 0 To conn.GetSchema("Tables").Rows.Count - 1
        rv.Add(conn.GetSchema("Tables").Rows(x)("TABLE_NAME"))
    Next x
    conn.Close()
    Return rv.ToArray

End Function

ありがとう、ブラッド

4

1 に答える 1

1

Webサーバーのパス(System.Web.HttpContext.Current.Server.MapPath)を含める必要があるため、「conn」割り当てを次のように置き換えてみてください。

Dim conn = New OleDb.OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0;data source=" &  System.Web.HttpContext.Current.Server.MapPath(FileName) & ";Extended Properties=Excel 8.0;")
于 2012-10-17T18:08:09.883 に答える