Excel文件上的conn.GetSchema(“Tables”)不返回工作表

时间:2012-10-17 17:53:14

标签: vb.net excel ado.net oledb getschematable

我正在将我的应用程序从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

谢谢, 布拉德

1 个答案:

答案 0 :(得分: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;")