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

问题描述 投票:0回答:1

我想在 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# 的解释,这是我发布这个问题的主要原因。

请帮助我...

注意:不要从本地存储转换它...

c# angularjs excel memorystream
1个回答
0
投票

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

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

看来不将工作簿保存在文件中是不行的

© www.soinside.com 2019 - 2024. All rights reserved.