【问题标题】:Convert Excel into Memory Stream and download via AngularJS将 Excel 转换为 Memory Stream 并通过 AngularJS 下载
【发布时间】:2016-08-23 02:13:48
【问题描述】:

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

请帮助我...

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

【问题讨论】:

    标签: c# angularjs excel memorystream


    【解决方案1】:

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

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

    如果你只想要一个字节数组,第一行就足够了

    编辑:

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

    似乎不能不将工作簿保存在文件中

    【讨论】:

    • 您可以尝试将带有Workbook.SaveCopyAs 的工作簿保存在一个临时文件夹中,并在其文件名上附加时间戳,然后使用@Sidewinder94 建议的方法再次读取它。
    猜你喜欢
    • 1970-01-01
    • 2014-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-03
    • 1970-01-01
    • 2019-11-08
    • 2022-11-28
    相关资源
    最近更新 更多