1

私は今から 1 週間この仕事をしようとしていますが、まだ道に迷っています。したがって、基本的には、いくつかの変更を加えて再度保存したいSharepointから開くExcelファイルがあります。

私はそれを使用して開いています:

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;

現時点ではこれで十分だと思います。私は偽装を使用して、それとすべてを開く権利を持っています。

その後、2 人が 2 つの異なる 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} というオブジェクトが表示されます。それは正常ですか? I' 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"]' は、タイプ 'System.Runtime.InteropServices.COMException' 動的 {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");

しかし、開いても変化がわかりません...

4

0 に答える 0