Экспорт в файл Excel в формате .zip для уменьшения размера файла.Как сжать xmldata перед отправкой клиенту? - PullRequest
0 голосов
/ 09 июля 2010

Мне нравится сжимать данные xmldata до того, как данные будут переданы клиенту в виде файла Excel. Я пытаюсь сжать и доставить его в виде файла .zip. это не работает Вот мой код ниже. Пожалуйста, помогите

Я попытался сжать его, преобразовать в байты и т. Д. И т. Д. Проблема с приведенным ниже кодом заключается в том, что XSL-преобразование не выполняется должным образом, а выходной файл Excel представляет собой необработанный xml с некоторым исключением .net в конце. (это то, что я вижу в файле .xls, который загружается в конце) До того, как я начал работать над сжатием, мой код ниже работал нормально, что дает правильно отформатированный файл Excel из ввода XML. Файл 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 Ответ

1 голос
/ 09 июля 2010

Почему вы не используете XLSX-формат вместо XLS? Это уже XML-данные, сжатые в ZIP-файл. Вы можете переименовать файл XLSX в ZIP, чтобы проверить это.

Обновлено : Кстати, ContentType в этом случае должно быть "application / vnd.openxmlformats-officedocument.spreadsheetml.sheet" вместо "application / vnd.ms-excel".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...