连接字符串/数据适配器问题

时间:2015-09-28 13:57:54

标签: asp.net .net vb.net excel

在我当前的项目中,我将创建一个程序,每天读取一个新的Excel电子表格(每天添加一个新的网络文件路径)并导出到数据库。每当我尝试写入数据表变量时,我都会收到此错误:

  

System.Data.OleDb.OleDbException(0x80004005):外部表格不是预期的格式。

使用以下代码段,错误发生在最后一行:

            xls_sql = "SELECT * FROM [" & FN & "]"

        Dim dt2 As DataTable
        Dim myAdapter2 As Data.OleDb.OleDbDataAdapter
        dt2 = New DataTable()
        myAdapter2 = New Data.OleDb.OleDbDataAdapter(xls_sql, Replace(My.Settings.xlsfile, "FileNameHere", FN))
        myAdapter2.Fill(dt2)

我认为我已经解决了这个问题,即使我添加日常Excel文件的程序(我不知道或访问)将它们列为.xls文档,它们实际上也被格式化为.xml文档。我的第一个线索是,当打开其中一张纸时,它看起来像普通的Excel表,但当我转到"另存为"时,默认选择的选项为" XML"

我正在使用XML的当前连接字符串:

Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:\temp\FileNameHere;Extended Properties="Excel 12.0 Xml;HDR=YES";

因为我必须寻找一个合适的替换我之前知道可用的.xls字符串。

这个字符串是否正确?
谁能解释我的问题?

1 个答案:

答案 0 :(得分:0)

我不确定它是否能解决您的问题,但我有一个导入xls电子表格的功能。我使用的连接字符串是这样的:

Dim conexao_Excel As String = "Provider=Microsoft.Jet.OleDb.4.0;" _
                             & "data source=""" & arquivo & """;" _
                             & "Extended Properties=Excel 8.0;"

da = New OleDb.OleDbDataAdapter("SELECT * FROM [" & nome & "$] WHERE valor IS NOT NULL ", conexao_Excel)

它对我来说非常合适。 arquivo是包含文件路径的变量,nome是工作表的名称。

希望有所帮助。