如何导入HTML格式的Excel

Roc*_*cky 11 c# asp.net import excel

我使用HttpContext从数据库导出数据,格式为table,tr和td.我想读取相同的文件并转换为datatable.

<add name="Excel03ConString" connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties='HTML Import;HDR={1};IMEX=1'" />

<add name="Excel03ConString" connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties='Excel 8.0;HDR={1};IMEX=1'" />

    private DataTable GetTableFromExcel()
    {
        DataTable dt = new DataTable();

        try
        {
            if (exclFileUpload.HasFile)
            {
                string FileName = Path.GetFileName(exclFileUpload.PostedFile.FileName);
                string Extension = Path.GetExtension(exclFileUpload.PostedFile.FileName);
                string FolderPath = Server.MapPath(ConfigurationManager.AppSettings["FolderPath"]);
                //string NewFileName = string.Format("{0}_{1}", DateTime.Now.ToString().Replace("/", "").Replace(" ", "").Replace(":", ""), FileName);
                string FilePath = Path.Combine(string.Format("{0}/{1}", FolderPath, FileName));
                exclFileUpload.SaveAs(FilePath);
                string conStr = "";
                switch (Extension)
                {
                    case ".xls": //Excel 97-03
                        conStr = ConfigurationManager.ConnectionStrings["Excel03ConString"].ConnectionString;
                        break;
                    case ".xlsx": //Excel 07
                        conStr = ConfigurationManager.ConnectionStrings["Excel07ConString"].ConnectionString;
                        break;
                }
                conStr = String.Format(conStr, FilePath, true);
                OleDbConnection connExcel = new OleDbConnection(conStr);
                OleDbCommand cmdExcel = new OleDbCommand();
                OleDbDataAdapter oda = new OleDbDataAdapter();

                cmdExcel.Connection = connExcel;

                connExcel.Open();
                DataTable dtExcelSchema;
                dtExcelSchema = connExcel.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
                string SheetName = dtExcelSchema.Rows[0]["TABLE_NAME"].ToString();
                connExcel.Close();

                connExcel.Open();
                cmdExcel.CommandText = "SELECT * From [" + SheetName + "]";
                oda.SelectCommand = cmdExcel;
                oda.Fill(dt);
                connExcel.Close();
                File.Delete(FilePath);

            }
        }
        catch (Exception ex)
        {

        }
        return dt;
    }
Run Code Online (Sandbox Code Playgroud)

当使用第二个连接字符串时,我收到错误"外部表在connection.Open()上没有预期的格式." 但是当使用第一个时,我在阅读工作表名称时遇到错误.

请告诉我如何阅读工作表或直接从Excel中读取数据.

Ste*_*ens 0

我在网上找到了这个: C# Excel file OLEDB read HTML IMPORT

他们在这里说:

您必须在 select 语句中使用不带 $ 的页面标题,而不是使用工作表名称。从 [HTMLPageTitle] 选择 *

在那篇文章中,他们还链接到本手册,该手册可能会派上用场,但太长,无法复制到此处: http ://ewbi.blogs.com/develops/2006/12/reading_html_ta.html

如果这不起作用,我认为您将不必重新创建原始 Excel,因此它仍然是 Excel 文件,而不是 HTML(如果在您的场景中可能的话)