MS Access OLEDBConnection到Excel问题

所以我现在已经搜索了大约2天,虽然我可以找到很多关于如何将Excel工作表放入GridView的示例,但它们都不适合我。

这是我的目标:我需要读取一个Excel文件,其中包含一个工作表,并且应该始终将其中的一个工作表读入ASP.NET网站中的GridView,并且我在代码隐藏文件中使用VB.Net。

我尝试了一种方法,试图使用表名的Schema(获取表名),但不管表的名称是什么,它总是以“Algrip”的形式返回,其中任何工作簿中都没有该表的名称我用一个测试。

所以我放弃了这一点,现在正在使用这段代码:(哪些工作完成了,有点)

    'Setup Variables
    Dim xlConnStr As String = ""
    Dim FileName As String = Path.GetFileName(FileUpload1.PostedFile.FileName)
    Dim Extension As String = Path.GetExtension(FileUpload1.PostedFile.FileName)
    Dim FolderPath As String = ConfigurationManager.AppSettings("FolderPath")
    Dim sheetname As String = InputBox("Enter Sheetname: ", "Excel Worksheet name")

    'Adjust Sheetname
    sheetname = sheetname + "$"

    'Set Connection based on Excel File Extension
    Select Case Extension
        Case ".xls"
            'Excel  97-03
            xlConnStr = ConfigurationManager.ConnectionStrings("Excel03ConString").ConnectionString
        Case ".xlsx"
            'Excel 07-Forward
            xlConnStr = ConfigurationManager.ConnectionStrings("Excel07ConString").ConnectionString
    End Select

    xlConnStr = String.Format(xlConnStr, FolderPath & FileName)
    Dim connXL As New OleDb.OleDbConnection(xlConnStr)
    pnlFileInfo.Visible = True
    connXL.Open()
    Using xlCmd As New OleDbCommand
        xlCmd.CommandType = CommandType.Text
        xlCmd.CommandText = ("Select * From [" + sheetname + "]")
        xlCmd.Connection = connXL
        Using xlDS As New DataSet()
            Using xlDA As New OleDbDataAdapter(xlCmd)
                xlDA.Fill(xlDS)
                gvExcelFile.DataSource = xlDS
                gvExcelFile.DataBind()
            End Using
        End Using
    End Using
    connXL.Close()

现在我的问题是这样的; 在下面一行中:

xlCmd.CommandText = ("Select * From [" + sheetname + "]")

如果我没有左括号和右括号,因为一些表格名称中有空格,我得到一个查询错误。 但是如果我添加括号,它会提示我两次表格名称。 对于我的生活,我无法弄清楚为什么。

我已经在上面列出的一行中设置了一个断点,并检查了变量sheetname的值,这是正确的,但由于某种原因,我再次收到提示。

有没有人有任何想法,为什么它这样做? 我错过了什么? 我理想的目的是能够读取表单名称并将其提供给选择语句的行,以便不需要用户操作,但是我所得到的所有内容都是相同的错误表单名称“Algrip”。

Excel工作表是一个xls文件,但可以保存为xlsx,如果有帮助的话。

我愿意重新做代码,如果我可以让它动态读取工作表名称。

谢谢你的帮助!!


尝试将整个命令存储在变量中,然后使用OleDbCommand构造函数将其分配给xlCmd.CommandText

Dim sheetname As String = InputBox("Enter Sheetname: ", "Excel Worksheet name")
sheetname = sheetname & "$"
Dim strQuery As String = "Select * From [" & sheetname & "]"

...

Using xlCmd As New OleDbCommand(strQuery ,connXL)

    Using xlDS As New DataSet()
        Using xlDA As New OleDbDataAdapter(xlCmd)
            xlDA.Fill(xlDS)
            gvExcelFile.DataSource = xlDS
            gvExcelFile.DataBind()
        End Using
    End Using

End Using
connXL.Close()
链接地址: http://www.djcxy.com/p/35753.html

上一篇: MS Access OLEDBConnection to Excel Issue

下一篇: Exporting Gridview To Excel Succeeds But File Is Corrupt?