申请使用Office.Interop C#格式化到Excel命名范围

问题描述 投票:1回答:1

我试图更改格式在一个Excel文件中的所有指定范围,但我得到一个错误:“无法设置字体类的名称属性”。很抱歉,如果这已经被问,但我找不到任何。

这里是我的代码。我敢肯定,我只是失去了一些东西。

提前致谢!

            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();
c# excel excel-interop
1个回答
0
投票

当您看到类似于一个错误,它可能预示着细胞,在工作表或工作簿本身的保护。尝试手动选择的范围(在Excel中,不C#),并更改字体。我的猜测是,你会得到一个类似的错误。

有办法C#中取消保护,但朝这个方向之前,评估使用情况,看看有没有什么你正在尝试做的是有意义的。

或者,请检查的范围内执行命令之前的保护。同样的事情也给这应该工作。

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

在一个侧面说明,Excel有相当薄弱的保护(设计),有办法破解的保护。下面是一个例子:

Alternatives to try/catch in VSTO

© www.soinside.com 2019 - 2024. All rights reserved.