OleDB获取表格问题 - 工作表名称完全是数字

时间:2013-04-18 17:54:22

标签: vb.net oledb

我正在使用以下函数从OleDB架构表中获取工作表名称:

Public Function GetSheetName(ByVal dtSchema As DataTable) As String
        Dim sheetName As String = ""
        Try

            If Not dtSchema.Rows(0)("TABLE_NAME").ToString().Contains("#") Then
                sheetName = dtSchema.Rows(0)("TABLE_NAME").ToString()
            End If

        Catch ex As Exception
            BuildResultTraceString("Exception in GetSheetName")
            BuildResultTraceString(ex.Message)
        End Try

        Return sheetName
    End Function

然后我就这样得到了表:

sql.Append("SELECT * FROM [" & sheetName & "A22:T10000]")
dt = _dh.GetTable(sql.ToString())

但是,当我尝试加载名为“20130418113010937”的工作表时,Get Table方法会捕获此异常:

The Microsoft Access database engine could not find the object ''20130418113010937$'A2:I10000'

它适用于我正在使用的所有其他工作表名称,但它不适用于此名称。我认为这是因为它完全是数字的。这有什么解决方法吗?该过程是自动进行的,因此我无法手动更改工作表名称,除非我以某种方式以编程方式进行。

谢谢!

1 个答案:

答案 0 :(得分:1)

你是对的,问题是数字表名称。当您使用OleDB检索工作表名称时,通过使用单引号包围数字名称(可能是为了保留其字符串),您可以“有利”。

从表名的两端删除单引号,你应该是好的:

sheetName = dtSchema.Rows(0)("TABLE_NAME").ToString().Trim("'")