从IIS打开时selectSheet Excel

我现在想把这个工作做一个星期,而且我还是迷了路。 所以基本上我有一个Excel文件,我从Sharepoint打开,我想要做一些改变,并再次保存。

我打开它使用:

Excel.Workbook excelWorkbook; using(Impersonator impersonator = new Impersonator()) { Excel.Application excelApp = new Excel.ApplicationClass(); excelWorkbook = excelApp.Workbooks.Open(workbookPath, Missing.Value, true, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value); } return excelWorkbook; 

我认为这一刻相当不错。 我使用模拟有权打开它和一切。

之后我做了一个副本,以便两个人可以同时在两个不同的excel上工作。 但这不是问题(我不这么认为)。

 string savedPath = ExcelHelper.saveExcelWorkbookToTemp(filename, excelWorkbook); //Closing first Excel and reopening the new one ExcelHelper.closeExcelWorkbook(excelWorkbook); Excel.Workbook excelWorkbookCurrent = ExcelHelper.openExcelWorkbook(savedPath); 

首先,当我尝试打开一个特定的工作表(在这里命名为“Paramètres”)时,我得到一个名为:Microsoft.Office.Interop.Excel.Worksheet {System .__ ComObject}的对象,是否正常? m使用这个函数打开工作表:

 public static Excel.Worksheet openExcelWorkSheet(Excel.Workbook excelWorkbook, string name) { Excel.Worksheet worksheet; using (Impersonator impersonator = new Impersonator()) { //Excel.WorkSheets worksheets = excelWorkbook.Sheets; //worksheet = (Excel.Worksheet)worksheets.get_Item(name); worksheet = (Excel.Worksheet)excelWorkbook.Sheets["Paramètres"]; worksheet.Select(Type.Missing); } return worksheet; } 

之后,我尝试更改单元格值我得到此错误:

  • worksheet.Cells [“A1”]'worksheet.Cells [“A1”]'抛出一个exception的types'System.Runtime.InteropServices.COMException'dynamic{System.Runtime.InteropServices.COMException}或这个错误,取决于方式我打电话给单元格…exception德HRESULT:0x800A03EC

你们有什么想法我能克服这个问题吗? 我不认为这是一个正确的问题,因为我使用pipe理员权限来做到这一点…

感谢提前。

PS:这里是我的function来修改一个单元格

  public static bool writeExcelCell(Excel.Worksheet worksheet, string cellName, string cellValue) { bool written = false; using (Impersonator impersonator = new Impersonator()) { try { worksheet.Cells[cellName] = cellValue; written = true; } catch (Exception e) { written = false; } } return written; } 

编辑:没有错误:

 worksheet.get_Range("A1").Value = "AAA"; worksheet.get_Range("A3").Value2 = "BBB"; worksheet.get_Range("A2").set_Value(Type.Missing, "test"); 

但是当我打开它时我看不到变化