【问题标题】:How can I export my ASP.NET page to Excel?如何将我的 ASP.NET 页面导出到 Excel?
【发布时间】:2023-03-13 01:04:01
【问题描述】:

如何将我的 webapp 中的数据从 ASP.NET (VB.NET,SQL 2005) 导出到 Excel 工作表?

【问题讨论】:

    标签: asp.net vb.net sql-server-2005


    【解决方案1】:

    更改 ASP.Net 页面的内容类型

    Response.ContentType = "application/ms-excel"
    

    【讨论】:

    • 还应该注意的是,有些人(GASP!)没有 excel,所以也许你应该把它转储到 CSV 并让他们弄清楚。
    • 可能还想确保您输出的是 Excel 可以理解的原始表格。
    • 你要做的还不止这些。否则,导出的“excel 文档”将包含指向您网站上的图像、过滤器、按钮等的链接。
    【解决方案2】:

    我最受欢迎的博客之一是如何使用 Excel XML 标记从 .NET 代码生成 Excel 文档(这不是 OpenXML,它是标准的 Excel XML)-http://www.aaron-powell.com/linq-to-xml-to-excel p>

    我还链接到使用 VB 9 的更简单方法。

    虽然这是 .NET 3.5 代码,但可以在 .NET 2.0 中使用 XmlDocument 轻松完成并以这种方式创建节点。

    然后只需设置正确的响应标头并在响应中流回即可。

    【讨论】:

    • @KyleC 已修复,它使用的是我旧博客的 URL
    【解决方案3】:

    SpreadsheetGear for .NET 可以做到。您可以在 this page 上找到一堆带有 C# 和 VB.NET 源代码的实时 ASP.NET 示例。

    免责声明:我拥有 SpreadsheetGear LLC

    【讨论】:

      【解决方案4】:

      如果您可以在 GridView 控件中显示您的数据,它本身就支持“右键单击-->导出到 Excel”,而无需编写任何代码。

      【讨论】:

        【解决方案5】:

        SQL Server 报告服务是将数据从应用程序导出到 Excel 的最佳方式。

        如果您无权访问/不想使用报告服务,具体取决于您想要提取/格式化的数据,可能使用 CSV 结构而不是 Excel 可能是最简单的。

        【讨论】:

          【解决方案6】:

          使用 Microsoft.Office.Interop.Excel dll 使用您的数据创建 excel 文件,然后使用 Hunter Daley 的下载方法提供下载文件的链接...

          【讨论】:

            【解决方案7】:

            作为一般解决方案,您可能需要考虑编写处理程序 (ashx) 以进行导出 - 并传递查询参数以重新创建查询以生成数据或传递标识符以从缓存中获取数据(如果已缓存) .根据 CSV 是否足以用于 Excel 导出,您可以只格式化数据并将其发送回,将 ContentType 设置为 @Hunter 建议的或使用主互操作程序集(这将需要服务器上的 Excel)来构建真正的 Excel 电子表格和将其序列化为响应流。

            【讨论】:

              【解决方案8】:

              我更喜欢使用 OLEDB 连接字符串。

              Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Excel.xls;Extended Properties="Excel 8.0;HDR=Yes;IMEX=1";
              

              【讨论】:

                【解决方案9】:

                不确定是否要导出页面,但如果您只想导出数据集或数据表

                        HttpContext.Current.Response.Clear()
                        HttpContext.Current.Response.AddHeader("content-disposition", String.Format("attachment; filename={0}", fileName))
                        HttpContext.Current.Response.ContentType = "application/ms-excel"
                
                        Dim sw As StringWriter = New StringWriter
                        Dim htw As HtmlTextWriter = New HtmlTextWriter(sw)
                
                
                        Dim table As Table = New Table
                
                        table.RenderControl(htw)
                
                        '  render the htmlwriter into the response
                        HttpContext.Current.Response.Write(sw.ToString)
                        HttpContext.Current.Response.End()
                

                【讨论】:

                  【解决方案10】:

                  我使用与 CodeKiwi 几乎完全相同的代码。如果您有一个 DataTable 并希望将其流式传输到客户端浏览器,我会使用它。

                  如果你想要一个文件,你也可以通过每一行/列做一个简单的循环,创建一个 CSV 文件,我想提供一个到客户端的链接 - 你可以使用 CSV 或 XLS 的文件扩展名。或者,如果您将生成的文件流式传输到客户端,它会提示他们是否要打开或将其保存到磁盘。

                  互操作(我上次尝试过)非常适合小型数据集,但不能很好地扩展 - 对于大型数据集来说速度非常慢。

                  【讨论】:

                    猜你喜欢
                    • 1970-01-01
                    • 2022-12-09
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 2010-11-15
                    • 1970-01-01
                    相关资源
                    最近更新 更多