我想在 C# 中动态创建一个 Excel 文件,并且需要在 AngularJS HTML Button Click 中将其设置为可下载。
我参考了以下链接来动态创建Excel http://www.increvcorp.com/manipulated-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);
我又参考了一篇文章,他们提出了直接从工作簿转换为内存流 - 将 excel 工作簿转换为 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 - 将二进制文件转换为 excel 文件并下载 - 它纯粹解释了 AngularJS 部分和 PHP。没有对 C# 的解释,这是我发布这个问题的主要原因。
请帮助我...
注意:不要从本地存储转换它...
如果您的工作簿对象无法转换为字节数组,您仍然可以使用保存在磁盘上的文件:
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
看来不将工作簿保存在文件中是不行的