我使用ASP.net和VB代码隐藏。
我需要能够将在代码中创建的excel文件转换为字节数组,以便将其发送到客户端。不将文件保存到服务器。
这就是我创建excel文档的方式
Dim APP As Excel.Application = New Excel.Application
Dim missing As Object = System.Reflection.Missing.Value
Dim Workbook As Excel.Workbook = (APP.Workbooks.Add(missing))
Dim worksheet As Excel.Worksheet = Workbook.ActiveSheet
'..Fill cells in worksheet..
这是我传送它的方式:
Response.Clear()
Response.ClearContent()
Response.ClearHeaders()
Response.Cookies.Clear()
Response.Cache.SetCacheability(HttpCacheability.Private)
Response.CacheControl = "private"
Response.Charset = System.Text.UTF8Encoding.UTF8.WebName
Response.ContentEncoding = System.Text.UTF8Encoding.UTF8
Response.AppendHeader("Content-Length", filebytes.Length.ToString())
Response.AppendHeader("Pragma", "cache")
Response.AppendHeader("Expires", 60)
Response.AppendHeader("Conetnt-Disposition", "attachement; filename='MostIssuesByModelReport.xlsx'; size=" & filebytes.Length.ToString() & "; creation-date=" & Date.Now.ToString("R") & "; modification-date=" & Date.Now.ToString("R") & "; read-date=" & Date.Now.ToString("R"))
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
'write to client
Response.BinaryWrite(filebytes)
Response.End()
我只需要将Workbook
的内容转换为filebytes
编辑: 看了一下之后,我现在可以让它下载一个文件,但是这个文件不使用上面代码中指定的文件名,它使用用户所在的asp服务器页面的名称,它也有一个.aspx扩展...如果我强制它在excel中打开它是正确的。除了弹出说来源可能已损坏。为什么会发生这种情况?我该如何解决?