0

我正在将我的应用程序从 Windows 窗体更改为 Windows 服务。

conn.GetSchema("Tables") 在两个代码库中的工作方式不同。

在新的代码库中,我无法返回 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 回答