Экспорт в файл Excel в формате.zip для уменьшения размера файла. Как сжать xmldata перед отправкой клиенту?

Мне нравится сжимать 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 ответ

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

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

Другие вопросы по тегам