使用 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
我正在尝试更改 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