将Excel转换为内存流并通过AngularJS下载

时间:2016-04-28 10:54:26

标签: c# angularjs excel memorystream

我想在C#中动态创建一个Excel文件,我需要在AngularJS HTML Button Click中将其设为可下载。

我引用了以下链接来动态创建Excel http://www.increvcorp.com/manipulating-excel-spreadsheet-using-c/

工作正常。但它将文件保存在本地存储中

 xlWorkBook.SaveAs("D:\\Mobile_List.xls", Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue, Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue);

我再提到了一篇文章,他们提出了直接从工作簿转换为内存流 - Convert excel workbook to byte[]的想法。

但是,在那篇文章中他们使用了

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

我无法在工作簿中找到方法SaveToStream,它显示错误

  

'Microsoft.Office.Interop.Excel.Workbook'不包含   'SaveToStream'的定义,没有扩展方法'SaveToStream'   接受第一个类型的参数   可以找到'Microsoft.Office.Interop.Excel.Workbook'(是吗?   缺少using指令或程序集引用?)

如何将其作为内存流并通过单击HTML按钮将其发送回AngularJS进行下载?

我再向AngularJS $http-post - convert binary to excel file and download提到了一篇帖子 - 它完全解释了angularJS部分和PHP。 C#没有解释,这是我发布这个问题的主要原因。

请帮助我...

注意:请勿将其从本地存储转换为...

1 个答案:

答案 0 :(得分:1)

如果您的工作簿对象无法转换为字节数组,您仍然可以使用保存在磁盘上的文件:

var byteArray = File.ReadAllBytes("PathToSavedWorkBook");
using(var ms = new MemoryStream(byteArray))
{
    //Use your memorystream
}

如果你只想要一个byteArray,那么第一行就足够了

修改

根据您使用的课​​程文档:https://msdn.microsoft.com/en-us/library/microsoft.office.tools.excel.workbook.aspx

似乎无法将工作簿保存在文件中