我想在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#没有解释,这是我发布这个问题的主要原因。
请帮助我...
注意:请勿将其从本地存储转换为...
答案 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
似乎无法将工作簿保存在文件中