MS Access的OLEDBConnection Excel问题

所以我已经search了大约2天了,虽然我可以find很多关于如何将Excel工作表放入GridView的例子,但是没有一个适用于我。

这是我的目标:我需要读取一个Excel文件,其中有一个工作表,它应该始终是一个工作表,在ASP.NET网站中的一个GridView和我使用VB.Net代码后面的文件。

我尝试了一种方法,试图使用表名的Schema(为了获得表名),但是不pipe表的名字是什么,它总是以“Algrip”的forms返回,其中任何一个工作簿中都没有这个名字的表我用一个testing。

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

'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 + "]")

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

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

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

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

我打开重新做代码,如果我可以得到它dynamic读取工作表名称。

谢谢你的帮助!!

尝试将整个命令存储在variables中,然后使用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()