3

当我尝试打开由下面的代码创建的 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()
4

2 回答 2

1

以下示例代码应该可以完成这项工作:

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
于 2017-07-26T13:59:08.370 回答
0

我可能错了,但是您将文件写入Response.OutputStream然后 call Response.Clear,所以我认为您的响应标头发送时没有内容(没有文件),这就是为什么它说“无法下载”。

尝试将ms.WriteTo移至之前Response.End

于 2012-12-11T19:07:47.920 回答