【问题标题】:insufficient memory to create an excel workbook内存不足,无法创建 Excel 工作簿
【发布时间】:2013-01-09 19:40:08
【问题描述】:

我的原始代码:

    Excel.Application xlErrorApp;
    Excel.Workbook xlErrorWorkBook;
    Excel.Worksheet xlErrorWorkSheet;
    object misValue = System.Reflection.Missing.Value;
    xlErrorApp = new Excel.Application();
    xlErrorWorkBook = xlErrorApp.Workbooks.Add(); // -> error
    xlErrorWorkSheet = (Excel.Worksheet)xlErrorWorkBook.Worksheets.get_Item(1);

第 6 行出现错误。

错误信息:

应用程序 Microsoft Excel 无法打开或保存文档,原因是 内存或磁盘空间不足。

【问题讨论】:

  • 错误是什么?请更具体。
  • 我刚刚测试了您的代码,它运行良好(不过需要整理一下),您使用的是什么版本的 C#,可能是您的 RAM/磁盘空间实际上不足?跨度>

标签: c# asp.net excel


【解决方案1】:

您使用的是哪个库?

我已经说过,但实际上微软目前不推荐也不支持任何无人值守、非交互式客户端应用程序或组件(包括 ASP、ASP.NET、DCOM 和 NT 服务)的 Microsoft Office 应用程序自动化,因为在此环境中运行 Office 时,Office 可能会表现出不稳定的行为和/或死锁。

我建议您寻找像 Open Office XML 这样的免费库或像 Aspose 这样的非免费库。

【讨论】:

  • 这是不可能的,因为用户只在本地机器上使用excel文件。
【解决方案2】:

Workbooks.Add() 来自 MSDN 的方法;

Parameters
Template
Type: System.Object

可选对象。确定如何创建新工作簿。如果这 参数是一个字符串,指定现有 Microsoft 的名称 Excel 文件,新的工作簿是用指定的文件创建的 模板。如果此参数是常量,则新工作簿包含 指定类型的单张纸。可以是以下之一 XlWBATemplate 常量:xlWBATChart、xlWBATExcel4IntlMacroSheet、 xlWBATExcel4MacroSheet 或 xlWBATWorksheet。如果这个论点是 省略时,Microsoft Excel 会创建一个包含多个空白的新工作簿 工作表(工作表的数量由 SheetsInNewWorkbook 设置 属性)。

如果您尝试创建新工作簿,请尝试这样;

Workbook newWorkbook = this.Application.Workbooks.Add(missing);

【讨论】:

  • 是的。起初我确实像你写的那样。在这种情况下,这并不重要。
【解决方案3】:

这个怎么样:

Microsoft.Office.Interop.Excel.ApplicationClass excel = new Microsoft.Office.Interop.Excel.ApplicationClass();
Microsoft.Office.Interop.Excel.Workbook workbook = excel.Workbooks.Open(fileName, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
                Type.Missing, Type.Missing, Type.Missing, Type.Missing,
                Type.Missing, Type.Missing, Type.Missing, Type.Missing,
                Type.Missing, Type.Missing);

【讨论】:

    【解决方案4】:

    很抱歉,我之前找不到链接。我使用了 EPPlus 支持。 http://epplus.codeplex.com

    感谢您的帮助!

    【讨论】:

      猜你喜欢
      • 2021-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多