在Excel中将数据写入单元格,C#

从Excel中读取单元格是完美的。 但我有问题写入新的数据到工作表3和单元格[8,2] ..如何解决这个代码?

我收到错误:

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

但我可以从这个文件使用其他button读取。

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); 

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

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

我正在使用Excel 2010。

您不能将范围设置为string:

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

尝试像这样:

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

你的代码似乎没问题。 问题可能与该文件。

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

在这里输入图像说明

您正在以只读模式打开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); 

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

 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,那么你不能修改你的文件。 我想这就是为什么你有一个错误“文件不可用”。