Обновлено значение ячейки Excel по имени в C # - PullRequest
3 голосов
/ 08 сентября 2011

У меня есть именованная ячейка в Excel, скажем, она называется "myCell" В C # я хочу иметь возможность получить доступ к этой ячейке и обновить ее значение. Я пробовал

Globals.ThisAddIn.Application.Names.Item(@"myCell").Value = "myValue";

Но это вызывает исключение COM с сообщением «Exception from HRESULT: 0x800A03EC»

Ответы [ 3 ]

2 голосов
/ 08 сентября 2011

Ваша проблема в том, что:

Globals.ThisAddIn.Application.Names.Item(@"myCell")

возвращает не Range, для которого вы можете установить значение, а объект типа Name.Вы можете получить Range, представляющий ячейку, которую вы ищете, используя свойство RefersToRange, а затем установить значение для этого объекта.Все это выглядит примерно так:

Globals.ThisAddIn.Application.Names.Item(@"myCell").RefersToRange.Value = "myValue";
1 голос
/ 08 сентября 2011

Просто используйте объект Range. Именованная ячейка является именованной Range, поэтому это должно работать:

myWorkBook.myWorkSheet.Range["myCell"].Value = "myValue";

P.D. У меня нет возможности проверить это, и я не уверен, можете ли вы присвоить значение непосредственно объекту Range или вам нужно указать смещение ячейки внутри Range (поскольку оно может содержать много ячеек).

Вы также можете попробовать: (Я не помню, работают ли именованные диапазоны непосредственно с ячейками)

myWorkBook.myWorkSheet.Cells["myCell"].Value = "myValue";
0 голосов
/ 18 ноября 2014

Использование:

var cell = myWorksheet.Evaluate("defined_name");
if (cell != null) { cell.Value = "hello"; }

Или:

myWorksheet.Cells.SetValue("defined_name", "hello");

В последнем случае попытка установить значение для несуществующего имени дает «Исключение из HRESULT: 0x800A03EC»

Если проверка на null не работает, проверьте этот ответ для получения списка значений int как ошибок.

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