【问题标题】:Writing data to cells in Excel, C#将数据写入 Excel、C# 中的单元格
【发布时间】:2017-05-07 05:26:38
【问题描述】:

从 Excel 单元格中读取非常完美。但是我在将新数据写入工作表 3 和单元格 [8,2] 时遇到问题。如何修复此代码?

我收到错误:

System.Runtime.InteropServices.COMException: 文件不可用。

但我可以使用其他按钮从该文件中读取。

xlApp = new Excel.Application();
xlWorkBook = xlApp.Workbooks.Open("C:\\Base.xls", 0, true, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0);
xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(3);

// range = xlWorkSheet.UsedRange;

//  Object[,] saRet;
//  saRet = (System.Object[,])range.get_Value(Missing.Value);

xlWorkSheet.Cells[8, 2] = "Salary";

xlWorkBook.Close(true, null, null);
xlApp.Quit();

releaseObject(xlWorkSheet);
releaseObject(xlWorkBook);
releaseObject(xlApp);

【问题讨论】:

  • 你应该发布你收到的错误。
  • base.xls 当前是否打开?
  • 不,我关闭了所有的excel.exe,我也把“true”改成了“false”,因为ReadOnly是“true”。
  • 确保您的进程具有对该文件的读取权限。
  • 确保没有其他不可见的“EXCEL.EXE”在后台运行,可以打开文件。您有管理权限吗?

标签: c# excel interop


【解决方案1】:

我设置单元格内容的方式是这样的:

 xlWorkSheet.Cells[8, 2].Value = "Salary";

我正在使用 Excel 2010。

【讨论】:

  • 如果我用 ASP.net 先生实现此代码是否可能?
  • @Bcktr 是的,我想是的。这需要解决方案需要 COM 互操作,所以我猜它不适用于 .NET Core
【解决方案2】:

您不能将范围设置为字符串:

xlWorkSheet.Cells[8, 2] = "Salary"; 

尝试类似:

xlRange = (Excel.Range) xlWorkSheet.Cells[8, 2];
xlRange.Value = "Salary";

【讨论】:

  • 您对此很有可能是正确的,但文件仍然不可用。也许 xlWorkBook = xlApp.Workbooks.Open 和写入数据有问题?读取数据正常..
  • 使用 Interop.Excel 版本 15,我可以使用 Sheet.Cells[x,x] = "Data" 设置数据
【解决方案3】:

您正在以只读模式打开 excel 文件。

xlApp.Workbooks.Open("C:\\Base.xls", 0, true, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0);

并且您将可编辑设置为 false。这可能是您无法编辑文件的原因...

xlApp.Workbooks.Open("C:\\Base.xls", 0, false, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", true, false, 0, true, 1, 0);

【讨论】:

    【解决方案4】:

    您的代码似乎没问题。问题可能出在文件上。

    在 Excel 中打开文件。您是否看到任何写保护消息?确保您能够手动修改其内容并可以保存文件。试一试。

    【讨论】:

      【解决方案5】:

      看看你的代码中的这一行:

      xlWorkBook = xlApp.Workbooks.Open("C:\\Base.xls", 0, true, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0);
      

      第三个参数定义的是你的文件应该以只读方式打开。您将其设置为 true,这意味着您无法修改文件。我认为这就是为什么你有一个错误“文件不可用”。

      【讨论】:

        猜你喜欢
        • 2010-12-06
        • 2018-10-08
        • 1970-01-01
        • 2014-09-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-01-13
        • 1970-01-01
        相关资源
        最近更新 更多