使用 Office.Interop C# 将格式应用于 Excel 命名范围

Apply Formatting to Excel Named Range using Office.Interop C#

我正在尝试更改 Excel 文件中所有命名范围的格式,但出现错误:"unable to set the name property of the font class"。 很抱歉,如果有人问过这个问题,但我找不到。

这是我的代码。我确定我只是遗漏了一些东西。

提前致谢!

            Excel.Application xlsx = new Excel.Application();
            Excel.Workbook wb = xlsx.Workbooks.Open(filepath, ReadOnly: false, Editable: true);

            foreach (Excel.Name NamedRange in wb.Names)
            {
                //MessageBox.Show(NamedRange.Name.ToString());

                NamedRange.RefersToRange.Cells.Font.Name = "Arial";

            }

            xlsx.Application.ActiveWorkbook.Save();
            xlsx.Application.Quit();
            xlsx.Quit();

当您看到任何与该错误类似的错误时,可能表示单元格、工作表或工作簿本身受到保护。尝试手动 select 范围(在 Excel 内,而不是 C#)并更改字体。我猜你会得到类似的错误。

有多种方法可以在 C# 中取消保护,但在沿着这条路前进之前,请评估用例并查看这对您尝试做的事情是否有意义。

或者,在执行命令之前检查范围是否受到保护。与此类似的东西应该可以工作。

if (!NamedRange.RefersToRange.Locked)
    NamedRange.RefersToRange.Cells.Font.Name = "Arial";

附带说明一下,Excel 的保护非常薄弱(按设计),有多种方法可以破解该保护。这是一个例子:

Alternatives to try/catch in VSTO