6

I have an "excel library" workbook and want to convert it to a byte[] so I could return the data with the File method exist in asp.net mvc controller.
There are "Save" and "SaveToStream" method, but no convert to byte[].

How can I return the excel file without saving it in server before?

gdoron is supporting Monica
  • 142,542
  • 55
  • 282
  • 355

2 Answers2

8

If you have a SaveToStream you could pass in a MemoryStream into that method. Then, once all the bytes are written call ToArray() on the memory stream, which should give you a byte array.

blowdart
  • 53,991
  • 11
  • 111
  • 146
  • 3
    Could you provide some code here? I tried but the Excel file is broken. – Weifeng Sep 13 '16 at 08:48
  • If I have a *SaveToStream*? Checked my desk drawer, didn't find it there. If you have another sentence maybe this might be useful. – EllieK Jul 20 '21 at 20:12
1

Do you need to convert it to a byte[]? File can also return a stream.

Workbook workbook = new Workbook();
Worksheet worksheet = new Worksheet("First Sheet");
worksheet.Cells[0, 1] = new Cell(9999999);

workbook.Worksheets.Add(worksheet);

MemoryStream m = new MemoryStream();
workbook.SaveToStream(m);

return File(m, "application/vnd.ms-excel");
Dallas
  • 2,207
  • 1
  • 13
  • 13