Экспорт таблицы HTML в Excel с помощью ASP.NET

У меня есть html-таблица (Not Gridview) и у нее нет соответствующих заголовков и строк. Вместо этого он настроил структуру и данные. Я хочу экспортировать эту таблицу в Excel. Как я могу использовать ASP.NET? enter image description here

Ярлыки - это фиксированный текст, а целочисленные значения поступают из базы данных. Таким образом, структура таблицы фиксируется только с изменением целочисленных/десятичных значений.

Ответ 1

Вы хотите экспортировать HTML-таблицу (не Gridview) настраиваемую структуру и данные в Excel с помощью ASP.NET.

Попробуйте следующий подход

  • Предоставьте атрибут ID и добавьте runat="server"

    <table id="tbl" runat="server" >

  • Добавьте следующий код

    Response.ContentType = "application/x-msexcel"; 
    Response.AddHeader("Content-Disposition", "attachment;
    filename=ExcelFile.xls");
    Response.ContentEncoding = Encoding.UTF8; 
    StringWriter tw = new StringWriter();
    HtmlTextWriter hw = new HtmlTextWriter(tw);
    tbl.RenderControl(hw);
    Response.Write(tw.ToString());
    Response.End();
    

Ответ 2

Вы можете использовать код ниже:

Response.ContentType = "application/force-download";
Response.AddHeader("content-disposition", "attachment; filename=Print.xls");
Response.Write("<html xmlns:x=\"urn:schemas-microsoft-com:office:excel\">");
Response.Write("<head>");
Response.Write("<META http-equiv=\"Content-Type\" content=\"text/html; charset=utf-     8\">");
Response.Write("<!--[if gte mso 9]><xml>");
Response.Write("<x:ExcelWorkbook>");
Response.Write("<x:ExcelWorksheets>");
Response.Write("<x:ExcelWorksheet>");
Response.Write("<x:Name>Report Data</x:Name>");
Response.Write("<x:WorksheetOptions>");
Response.Write("<x:Print>");
Response.Write("<x:ValidPrinterInfo/>");
Response.Write("</x:Print>");
Response.Write("</x:WorksheetOptions>");
Response.Write("</x:ExcelWorksheet>");
Response.Write("</x:ExcelWorksheets>");
Response.Write("</x:ExcelWorkbook>");
Response.Write("</xml>");
Response.Write("<![endif]--> ");
StringWriter tw = new StringWriter(); 
HtmlTextWriter hw = new HtmlTextWriter(tw);      
tbl.RenderControl(hw);
Response.Write(tw.ToString());
Response.Write("</head>");
Response.flush();

Также рекомендуется указывать inline css, если вы хотите, чтобы экспортированный результат выглядел точно так же, как ваш пользовательский интерфейс. Если вы примените классы css к таблице, то это не будет отображаться в экспортированном excel.

Ответ 3

Если dtReport содержит таблицу (например, данные для экспорта), мы можем экспортировать таблицу в Excel, используя следующий LOC, а также мы можем отформатировать заголовок

    if (dtReports != null && dtReports.Rows.Count > 0 && !string.IsNullOrEmpty(formName))
            {
                string filename = formName.ToUpper() + ParsConstant.XLS_EXTENSION;
                StringWriter tw = new StringWriter();

                using (HtmlTextWriter hw = new HtmlTextWriter(tw))
                {

                    //Binding Datatable to DataGrid.
                    DataGrid dgGrid = new DataGrid();
                    dgGrid.DataSource = dtReports;
                    dgGrid.DataBind();

                    //Some Properties for the Header
                    dgGrid.HeaderStyle.Font.Bold = true;
                    dgGrid.HeaderStyle.Font.Size = 13;

                    //Get the HTML for the control.
                    dgGrid.RenderControl(hw);


                    Response.ContentType = "application/vnd.ms-excel";
                    Response.AppendHeader("Content-Disposition", "attachment; filename=" + filename + "");
                    //Response.Write("<style> TD { mso-number-format:\\@; } </style>");


                    Response.Write(tw.ToString());
                    Response.End();
                }
            }

с использованием формата MSO не будет избегать начальных нулей, но он преобразует текст в строку, которая не рекомендуется для выполнения операций.

Ответ 4

Если ваши данные основаны на данных (если вы не можете хранить их в XML файле), посмотрите на аналогичный вопрос, который я опубликовал недавно.

Написание строк DataReader в файл Excel

Ответ 5

Нет автоматизированного способа. Но вы можете использовать тот же код для создания таблицы и вместо этого записать ее на выход. Если вы напишете его как простой CSV файл, пользователь может загрузить его в Excel, просто щелкнув загруженный файл.

Установив правильные заголовки, вы можете направить браузер для обработки содержимого как загрузки вместо веб-страницы. Я разместил код, чтобы сделать это в этой статье.