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呼び出すResponse.Clearので、resposeヘッダーがコンテンツなし(ファイルなし)で送信されていると思います。そのため、「ダウンロードできませんでした」と表示されます。

ms.WriteTo直前に移動してみてくださいResponse.End

于 2012-12-11T19:07:47.920 に答える