【问题标题】:Connection String/Data Adapter Issues连接字符串/数据适配器问题
【发布时间】:2015-09-28 13:57:53
【问题描述】:

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

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

使用如下代码sn -p,错误出现在最后一行:

            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 字符串。

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

【问题讨论】:

  • 右击xls文件并用记事本打开:它包含XML代码?如果是这样,请使用 .NET 类来读取 XML。

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


【解决方案1】:

我不确定它是否能解决您的问题,但我有一个导入 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 是工作表的名称。

希望对您有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-20
    • 1970-01-01
    相关资源
    最近更新 更多