【问题标题】:Writing an excel workbook to a memoryStream将 Excel 工作簿写入 memoryStream
【发布时间】:2014-01-08 09:30:40
【问题描述】:

我想将新创建的 Excel 保存在 MemoryStream 中。这是我的代码:

using Excel = Microsoft.Office.Interop.Excel;
...

public void Create(){
  Excel.Application xlApp;
  Excel.Workbook xlWorkBook;
  Excel.Worksheet xlWorkSheet;

  //Complete xlWorkSheet

  MemoryStream ms = new MemoryStream();
  xlWorkBook.SaveAs(ms);

  xlWorkBook.Close(false, misValue, misValue);
  xlApp.Quit();
}

问题是当我在 xlWorkBook.SaveAs(ms) 之后断点时,ms 为空(长度为 0)。此外,在保存时,会在 PC 上创建一个文件“System.IO.MemoryStream”(在文件夹 Documents 中)。另外,我尝试了 ExportAsFixedFormat 并且效果很好(但文档保存在 PC 上)。 那么,SaveToStream 在这里就不存在了。

我正在 Visual Studio 2012 和 Dotnet 4.5 中开发应用程序 Web ASP.NET MVC4。语言是 C#。 可以将工作簿保存在 memoryStream 中而不保存在 PC 上吗?

谢谢,

【问题讨论】:

    标签: c# visual-studio-2012 memorystream


    【解决方案1】:

    您是否尝试过以下选项?

    xlWorkSheet.UsedRange.Copy(Type.Missing);
    

    【讨论】:

    • 您好 Nil23,我尝试了您提出的选项。 Excel.Worksheet xlWorkSheet; //完成xlWorkSheet xlWorkSheet.UsedRange.Copy(Type.Missing);内存流毫秒 = 新的内存流(); xlWorkBook.SaveAs(ms);还是不行……
    • 我注意到一些事情:我认为 xlWorkBook.SaveAs(ms) 只有在 xlWorkBook = new XLWorkbook() (来自 ClosedXML)时才能使用。 ..ClosedXML 在 Visual Studio 2012 中可用?如果是,是什么图书馆?
    【解决方案2】:

    处理器正在后台运行 你试过了 试试这个来终止进程“Excel.exe”

    'foreach (Process proc in System.Diagnostics.Process.GetProcessesByName("Excel"))
               {
               proc.Kill();
               }'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-11-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-25
      • 1970-01-01
      • 2012-03-31
      相关资源
      最近更新 更多