我喜欢在将数据作为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()
答案 0 :(得分:1)
为什么不使用XLSX-Format而不是XLS?它已经在ZIP文件中压缩了XML-Data。您可以将XLSX文件重命名为ZIP以验证这一点。
已更新:顺便说一句,案例中的ContentType
应为“application / vnd.openxmlformats-officedocument.spreadsheetml.sheet”而不是“application / vnd.ms-excel”