Применить форматирование к именованному диапазону Excel с помощью Office.Interop C # - PullRequest
0 голосов
/ 09 февраля 2019

Я пытаюсь изменить форматирование для всех именованных диапазонов в файле Excel, но получаю сообщение об ошибке: «невозможно установить свойство name класса шрифта».Извините, если это было задано, но я не смог найти.

Вот мой код.Я уверен, что просто что-то упустил.

Заранее спасибо!

            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();

1 Ответ

0 голосов
/ 09 февраля 2019

Когда вы видите любую ошибку, похожую на эту, это, вероятно, указывает на то, что ячейка, рабочая таблица или сама рабочая книга защищены.Попробуйте выбрать диапазон вручную (в Excel, а не в C #) и измените шрифт.Я предполагаю, что вы получите похожую ошибку.

Есть способы снять защиту в C #, но прежде чем идти по этому пути, оцените вариант использования и посмотрите, имеет ли это смысл для того, что вы пытаетесь сделать.

Или проверьте, защищен ли диапазон перед выполнением вашей команды.Что-то похожее на это должно работать.

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

Кстати, Excel имеет довольно слабую защиту (по замыслу), есть способы ее взломать.Вот один пример:

Альтернативы попробовать / поймать в VSTO

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...