Excel文件读取外部表格不是预期的格式

时间:2015-04-21 12:19:11

标签: c#

我使用JS生成excel文件,然后将其上传到临时文件夹中,然后在上传后读取它。它给出了错误“外部表格不是预期的格式”。当我试图读取生成的Excel文件(它在xls fomat中,与xlsx相同)时,如果我在MS Excel中制作excel文件并阅读它,它的工作正常 这就是我的生成方式 函数GenerateExcel(){

    var tab_text = $("#hdnUserData").val();
    tab_text = tab_text.replace(/<A[^>]*>|<\/A>/g, ""); //remove if u want links in your table
    tab_text = tab_text.replace(/<img[^>]*>/gi, ""); // remove if u want images in your table
    tab_text = tab_text.replace(/<input[^>]*>|<\/input>/gi, ""); // reomves input params

    var ua = window.navigator.userAgent;
    var msie = ua.indexOf("MSIE ");
    if (msie > 0 || !!navigator.userAgent.match(/Trident.*rv\:11\./))      // If Internet Explorer
    {
        txtArea1.document.open("txt/html", "replace");
        txtArea1.document.write(tab_text);
        txtArea1.document.close();
        txtArea1.focus();
        sa=txtArea1.document.execCommand("SaveAs",true,"Users Report.xls");
        //sa = txtArea1.document.execCommand('SaveAs', true, '<a href="#" target="_blank">Error Report.xsl</a>');
    }
    else//other browser not tested on IE 11
        sa = window.open('data:application/vnd.ms-excel,' + encodeURIComponent(tab_text));

    return (sa);

}

像这样的列中的excel数据

UserID Name Username

和隐藏字段包含CSV格式的数据

1,Test,test123;2,myuser,muser1

这就是我阅读excel的方式

using (var conn = new OleDbConnection())
            {
                var dt = new DataTable("dtExcel");
                string importFileName = path;//Path of uploaded excel file with filename
                string fileExtension = System.IO.Path.GetExtension(importFileName);
                if (fileExtension == ".xls")
                    conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + importFileName + ";" + "Extended Properties='Excel 8.0;HDR=YES;IMEX=1;'";
                if (fileExtension == ".xlsx")
                    conn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + importFileName + ";" + "Extended Properties='Excel 12.0 Xml;HDR=YES;IMEX=1;'";
                conn.Open();
                DataTable dtSheets = conn.GetSchema("Tables");
                string firstSheet = dtSheets.Rows[0]["TABLE_NAME"].ToString();
                using (var comm = new OleDbCommand())
                {
                    comm.CommandText = "select * from [" + firstSheet + "]";
                    comm.Connection = conn;
                    using (var da = new OleDbDataAdapter())
                    {
                        da.SelectCommand = comm;
                        da.Fill(dt);                       
                    }

                }
            }

任何替代阅读方法?我尝试过使用流但同样的错误。 错误出现在con.Open()

0 个答案:

没有答案