【问题标题】:Export Html Tables to Multiple Excel Sheet using C#使用 C# 将 Html 表导出到多个 Excel 工作表
【发布时间】:2015-04-20 20:42:03
【问题描述】:

如何使用 c# 将多个表格导出到多个 Excel 工作表?下面的代码有效,但仅适用于 1 个 html 表。

    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();

以下是 *.aspx 页面中的表格。而且我想将两个表放在一个带有多个工作表的 excel 中。

例如:表 1 在工作表 1 中 表 2 在工作表 2 中

  <table id="tbl" border="1" runat="server" >
                <tr>
                    <td>Product</td>
                    <td>Price</td>
                    <td>Available</td>
                    <td>Count</td>
                </tr>
                <tr>
                    <td>Bred</td>
                    <td>1
                    </td>
                    <td>2
                    </td>
                    <td>3
                    </td>
                </tr>
                <tr>
                    <td>Butter</td>
                    <td>4
                    </td>
                    <td>5
                    </td>
                    <td>6
                    </td>
                </tr>
            </table>

     <table id="tbl2" border="1" runat="server" >
                <tr>
                    <td>KD</td>
                    <td>Dabhi</td>
                    <td>Qnil</td>
                    <td>Dabhi</td>
                </tr>
                <tr>
                    <td>Bred</td>
                    <td>1
                    </td>
                    <td>2
                    </td>
                    <td>3
                    </td>
                </tr>
                <tr>
                    <td>Butter</td>
                    <td>4
                    </td>
                    <td>5
                    </td>
                    <td>6
                    </td>
                </tr>
            </table>


     <asp:Button runat="server" ID="ExportToExcelButton" OnClick="ExportToExcelButton_Click"
        Text="Export To Excel" />

【问题讨论】:

    标签: c# asp.net asp.net-mvc


    【解决方案1】:

    在您提到的示例中,您NOT 创建了一个 Excel(或 Excel 工作表),而不是尝试以 Excel 格式打开 HTML 内容。这就是原因,即使您有 TWO 表,它们也会显示在单张表中。

    使用Microsoft's OpenXml SDK,您可以通过它创建任意数量的表格并将数据注入表格中。甚至 OpenXml SDK 在涉及日期类型时也遇到了一些小问题(尤其是在从 Excel 工作表中读取数据时)。在这种情况下,您可以访问任何第三方 Excel 自动化提供商,例如 SpreadSheetGear

    【讨论】:

    • 谢谢,有没有其他办法解决?使用 C# 或其他语言?
    • 使用C#,可以使用OpenXml SDK。还有另一种不使用 OpenXml(或第三方工具)来解决的方法,即构建您自己的 XML 并将其作为响应发送 (codeproject.com/Articles/532589/…)。我不认为这是一种通用的方法,所以我不建议这样做。
    【解决方案2】:

    GridViews 的工作解决方案在这里:

    http://www.aspsnippets.com/Articles/Exporting-Multiple-GridViews-To-Excel-SpreadSheet-in-ASP.Net.aspx

    您可能还想在这里寻找一些建议:

    Add table to second sheet of Excel using C#

    您可能希望使用 EPPLUS 库(免费)而不是互操作,因为它有很多功能:

    http://epplus.codeplex.com/

    【讨论】:

    • 感谢您的回复。但是,我正在寻找 HTML 表格而不是网格视图。 :) 我真的很感谢你在这里的努力。
    • 没问题,那么使用像EPPLUS这样的库可能是你的解决方案,而不是Interop,它会有更多的灵活性。
    • 我不知道 EPPLUS,是否可以使用这个库将 HTML 表格转换为 excel?如果是,如何?
    • 我将它的链接添加到我的帖子中
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-29
    • 1970-01-01
    • 2012-09-15
    • 1970-01-01
    • 2010-11-07
    • 2023-03-21
    • 1970-01-01
    相关资源
    最近更新 更多