导出为Excel文件为.zip以减小文件大小。如何在将xmldata发送到客户端之前对其进行压缩?

时间:2010-07-08 21:56:15

标签: asp.net xml vb.net excel compression

我喜欢在将数据作为excel文件提供给客户端之前压缩xmldata。我正在尝试压缩并将其作为.zip文件提供。它不起作用这是我的代码如下。请帮忙

我尝试压缩它,将其转换为字节等等。以下代码的问题是,XSL转换没有正确发生,输出excel文件是原始xml,最后有一些.net异常。 (这就是我在最后下载的.xls文件中看到的内容)     在我开始进行压缩之前,我的下面代码工作正常,从xml输入中提供格式正确的excel文件。 excel文件非常好,你甚至无法告诉它是来自XML。   请帮助压缩

 Dim attachment As String = "attachment; filename=DataDownload.xls"
        Response.ClearContent()
        Response.AddHeader("content-disposition", attachment)
        Response.ContentType = "application/vnd.ms-excel"
        'Response.ContentType = "text/csv"

        Response.Charset = ""
        Dim ds As New DataSet()

        Dim objXMLReader As XmlReader
        objXMLReader = Microsoft.ApplicationBlocks.Data.SqlHelper.ExecuteXmlReader(ConnectionString, CommandType.StoredProcedure, "SPName")

        ds.ReadXml(objXMLReader)

        Dim xdd As New XmlDataDocument(ds)
        Dim xt As New XslCompiledTransform()
        'xt.Transform(xdd, Nothing, Response.OutputStream)

        Dim bytearr() As Byte
        bytearr = System.Text.Encoding.Default.GetBytes(xdd.OuterXml)

        Dim objMemStream As New MemoryStream()
        objMemStream.Write(bytearr, 0, bytearr.Length)
        objMemStream.WriteTo(Response.OutputStream)
        xt.Transform(xdd, Nothing, Response.OutputStream)

        Response.End()

1 个答案:

答案 0 :(得分:1)

为什么不使用XLSX-Format而不是XLS?它已经在ZIP文件中压缩了XML-Data。您可以将XLSX文件重命名为ZIP以验证这一点。

已更新:顺便说一句,案例中的ContentType应为“application / vnd.openxmlformats-officedocument.spreadsheetml.sheet”而不是“application / vnd.ms-excel”