所以我现在已经搜索了大约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的值,它是正确的但由于某种原因我再次收到提示 .
有没有人知道它为什么这样做?我错过了什么?我理想的是能够读取工作表名称并使用select语句将其提供给行,这样就不需要用户操作,但我所有的方式都是相同的错误工作表名称'Algrip' .
Excel工作表是一个xls文件,但如果有帮助,可以保存为xlsx .
如果我可以让它动态地读取工作表名称,我愿意重新编写代码 .
谢谢你的帮助!!
1 回答
尝试将整个命令存储在变量中,然后使用
OleDbCommand
构造函数将其分配给xlCmd.CommandText