从IIS打开时选择Sheet Excel

时间:2012-05-30 16:37:13

标签: excel sharepoint iis impersonation

我现在试着让这项工作工作一周,但我仍然迷失了。 所以基本上我有一个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}。是否正常?我正在使用此功能打开工作表:

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”]'抛出类型'System.Runtime.InteropServices.COMException'的异常'dynamic {System.Runtime.InteropServices.COMException} 或者这个错误,取决于我调用单元格的方式... 例外de HRESULT:0x800A03EC

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

先谢谢。

PS:这是我修改单元格的功能

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

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

0 个答案:

没有答案