C# ASP.NET OleDb Excel与工作表的连接

C# ASP.NET OleDb Excel与工作表的连接,c#,asp.net,excel,ado.net,oledb,C#,Asp.net,Excel,Ado.net,Oledb,我有一个Excel文件,客户正在从他们的财务软件中提取并上传到我的web应用程序。我需要通过ADO连接到该文件,并将其内容读入SQL数据库 问题是,来自财务软件的文件是一个独立的Excel工作表,而不是工作簿,因此我发现的任何软件(除Excel外)都无法连接/打开它。无论我在OleDB连接器中使用什么连接字符串,我都无法使其工作 如果我在Excel中打开文件,然后简单地保存它,我就可以连接并读取它。我编写了一些代码来自动化Excel,使用Office interop来打开/保存文件,并且可以正常

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

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

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

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

提前谢谢

    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."
         //
         //
    }
}
HttpPostedFile jvFile=FileUpload1.PostedFile;
字符串jvPath=Path.Combine(Server.MapPath(“~”),Path.GetFileName(jvFile.FileName));
SaveAs(jvPath);
字符串[]开始={
“Provider=Microsoft.Jet.OLEDB.4.0;数据源=”,
“Provider=Microsoft.Jet.OLEDB.4.0;数据源=”,
“Provider=Microsoft.ACE.OLEDB.12.0;数据源=”,
“Provider=Microsoft.ACE.OLEDB.12.0;数据源=”,
“Provider=Microsoft.ACE.OLEDB.12.0;数据源=”,
“Provider=Microsoft.ACE.OLEDB.12.0;数据源=”,
“Provider=Microsoft.Jet.OLEDB.4.0;数据源=”,
“提供程序=Microsoft.Jet.OLEDB.4.0;数据源=”
};
字符串[]结束={
“扩展属性=\”Excel 8.0;HDR=是;IMEX=1;\“”,
“扩展属性=\”Excel 8.0;HDR=是;\“”,
“扩展属性=\”Excel 8.0;HDR=是;IMEX=1\”,
“扩展属性=\”Excel 12.0 Xml;HDR=是\“,
“扩展属性=\”Excel 12.0 Xml;HDR=是;IMEX=1\”,
“扩展属性=\”Excel 12.0;HDR=是\“,
“扩展属性=\”Excel 12.0宏;HDR=是\“,
“扩展属性=\”文本;HDR=Yes;FMT=Delimited\”,
“扩展属性=\”文本;HDR=是;FMT=固定\;”
};
for(int i=0;i

我不能将问题文件放在任何包含敏感数据的b/c位置。

我已使用该文件读取Excel文件。这是免费的。

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