私は今から 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");
しかし、開いても変化がわかりません...