当我尝试打开由下面的代码创建的test.xlsx时,我得到“test.xlsx无法下载”。也就是说,如果我选择保存文件,我可以保存并打开文件。
请让我知道我做错了什么。
谢谢!
Dim pack As New ExcelPackage
Dim ws As ExcelWorksheet = pack.Workbook.Worksheets.Add("Sheet1")
Dim ms As New MemoryStream
Dim dt As New DataTable
ws.Cells(1, 1).Value = "Test"
pack.SaveAs(ms)
ms.WriteTo(Context.Response.OutputStream)
Context.Response.Clear()
Context.Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
Context.Response.AddHeader("Content-Disposition", "attachment;filename=test.xlsx")
Context.Response.StatusCode = 200
Context.Response.End()
答案 0 :(得分:0)
我可能错了,但您将文件写入Response.OutputStream
然后调用Response.Clear
,因此我认为您的respose标头正在发送时没有内容(没有文件)这就是为什么它说“无法下载”。
尝试将ms.WriteTo
移至Response.End
答案 1 :(得分:0)
以下示例代码应该完成这项工作:
Using pkg = New ExcelPackage()
Dim ws = pkg.Workbook.Worksheets.Add("Sheet 1")
ws.Cells(1, 1).Value = "Hello"
Dim buf = pkg.GetAsByteArray()
Response.Clear()
Response.AddHeader("Content-Disposition", "attachment;filename=test.xlsx")
Response.ContentType = MimeMapping.GetMimeMapping("*.xlsx")
Response.BinaryWrite(buf)
Response.Flush()
Response.[End]()
End Using