【问题标题】:ASP.NET OleDb Excel Connection to WorksheetASP.NET OleDb Excel 连接到工作表
【发布时间】:2009-09-23 04:31:42
【问题描述】:

我有一个 Excel 文件,客户从他们的财务软件中提取并上传到我的网络应用程序。我需要通过 ADO 连接到文件并将其内容读入 SQL 数据库。

问题是来自财务软件的文件是一个独立的 Excel 工作表,而不是工作簿,所以我发现没有任何软件(除了 Excel)可以连接/打开它。无论我在 OleDB 连接器中使用什么连接字符串,都无法正常工作。

如果我在 Excel 中打开文件,然后简单地保存它,我就可以正常连接并阅读它。我编写了一些代码来自动化 Excel,使用 Office 互操作,打开/保存文件,它可以工作,但我已经得出结论,根据测试和阅读,在服务器上这样做是不好的做法。

有谁知道我可以解决这个问题的方法吗?我见过一些第三方库,但它们非常昂贵。

提前致谢。

    HttpPostedFile jvFile = FileUpload1.PostedFile;
string jvPath = Path.Combine(Server.MapPath("~"), Path.GetFileName(jvFile.FileName));
jvFile.SaveAs(jvPath);

string[] begins = {
                      "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=",
                      "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=",
                  "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=",
                  "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=",
                  "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=",
                  "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=",
                  "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=",
                  "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
                  };
string[] ends = {
                    ";Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1;\"",
                    ";Extended Properties=\"Excel 8.0;HDR=Yes;\"",
                ";Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1\"",
                ";Extended Properties=\"Excel 12.0 Xml;HDR=YES\"",
                ";Extended Properties=\"Excel 12.0 Xml;HDR=YES;IMEX=1\"",
                ";Extended Properties=\"Excel 12.0;HDR=YES\"",
                ";Extended Properties=\"Excel 12.0 Macro;HDR=YES\"",
                ";Extended Properties=\"text;HDR=Yes;FMT=Delimited\"",
                ";Extended Properties=\"text;HDR=Yes;FMT=Fixed\";"
                };

for(int i = 0; i < begins.Length; i++)
{
    StringBuilder sbExcelFileConnStr = new StringBuilder();
    sbExcelFileConnStr.Append(begins[i]);
    sbExcelFileConnStr.Append(jvPath);
    sbExcelFileConnStr.Append(ends[i]);

    OleDbConnection dbConn = new OleDbConnection(sbExcelFileConnStr.ToString());
    string[] excelSheets = { };
    try
    {
        dbConn.Open();
    }
    catch (Exception ex)
    {
         // fails here with "System.Data.OleDb.OleDbException: 
         // External table is not in the expected format."
         //
         //
    }
}

我不能将问题文件放在包含敏感数据的任何地方。

【问题讨论】:

  • 你能发布一些示例代码吗?

标签: c# asp.net excel ado.net oledb


【解决方案1】:

我使用Excel Data Reader 来读取 Excel 文件。它是免费的。

【讨论】:

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