Я создаю шаблон Excel с использованием OpenXML через c #, чтобы пользователи могли заполнять его и импортировать в нашу систему.
Часть процесса заключается в том, что пользователь выбирает параметры из раскрывающихся списков, а скрытые столбцы заполняются идентификаторами этих выборов с использованием формулы VLOOKUP. Все те с прямыми ссылками списка работают отлично.
У меня есть один случай, когда выбор из списка, называемого «Группа приложений», определяет, какой список используется в следующем столбце, называемом «Приложение». Это делается с помощью функции INDIRECT в Excel и работает нормально. Проблема возникает при попытке получить идентификатор для динамического списка. Я опубликую код ниже, но просто открыв Excel и выбрав опцию из группы приложений, вы получите правильный список в приложении. Выбор приложения не заполняет столбец applicationid автоматически. Если я выберу столбец applicationid, чтобы увидеть формулу в порядке. Если я щелкну в поле редактирования в верхней части Excel, а затем выделю из него формулу, то сработает и с этого момента будет работать. Еще раз, это VLOOKUP, использующий INDIRECT для создания ссылки на список.
Я провел несколько тестов, и кажется, что проблема заключается в НЕПОСРЕДСТВЕННО, как будто я жестко кодирую имя списка, которое запускает vlookup, как и должно быть.
Я также удалил замещающие функции, но это не имело никакого значения.
Я проверил режим расчета в столбце, и он настроен на автоматический.
Я уже искал в Интернете, но ничего не нашел
// Application Group
cell = new Cell() { CellReference = "AI" + rownumber };
cell.CellValue = new CellValue();
cellFormula = new CellFormula()
{
Text = "VLOOKUP(AH" + rownumber.ToString() + " ,ApplicationGroupList,2,FALSE)"
};
cell.CellFormula = cellFormula;
row.Append(cell);
// Application
cell = new Cell() { CellReference = "AK" + rownumber };
cell.CellValue = new CellValue();
cellFormula = new CellFormula()
{
Text = "VLOOKUP(AJ" + rownumber.ToString() + ",INDIRECT(SUBSTITUTE(SUBSTITUTE(AH" + rownumber.ToString() + ",\" \",\"\"),\"/\",\"\") & \"Id\") ,2,FALSE)"
};
cell.CellFormula = cellFormula;
row.Append(cell);
Нет сообщений об ошибках, и формула верна, поскольку простое нажатие в поле редактирования запускает формулу, и с этого момента она работает. Кажется, что Excel не признает его как формулу, хотя он был настроен так же, как и другие, которые работают нормально. Смотрите код выше. Группа приложений работает нормально. Приложение не, но созданная формула хорошо синтаксически и функционально.
Есть ли у кого-нибудь опыт чего-то подобного и как заставить формулу работать так же, как все остальные?