#excel #apache-poi
#excel #apache-poi
Вопрос:
Я хочу использовать POI setCellFormula для установки формулы в ячейку, формула взята из надстройки Excel, но в настоящее время не установлена. После этого я перенесу Excel на компьютер с установленной надстройкой для оценки формул.
Однако, когда я пытаюсь установить формулу с помощью setCellFormula, я получаю исключение:
Исключение в потоке «main» org.apache.poi.ss.formula.Исключение FormulaParseException: имя ‘MY_FUNC’ полностью неизвестно в текущей рабочей книге в org.apache.poi.ss.formula.FormulaParser.function(FormulaParser.java:918) в org.apache.poi.ss.formula.FormulaParser.parseNonRange(FormulaParser.java:556) в org.apache.poi.ss.formula.FormulaParser.parseRangeable(FormulaParser.java:427) в org.apache.poi.ss.formula.FormulaParser.parseRangeExpression(FormulaParser.java:266) в org.apache.poi.ss.formula.FormulaParser.parseSimpleFactor(FormulaParser.java:1117) в org.apache.poi.ss.formula.FormulaParser.percentFactor(FormulaParser.java:1077) в org.apache.poi.ss.formula.FormulaParser.powerFactor(FormulaParser.java:1064) в org.apache.poi.ss.formula.FormulaParser.Термин (FormulaParser.java:1424) в org.apache.poi.ss.formula.FormulaParser.additiveExpression(FormulaParser.java:1524) в org.apache.poi.ss.formula.FormulaParser.concatExpression(FormulaParser.java:1508) в org.apache.poi.ss.formula.FormulaParser.comparisonExpression(FormulaParser.java:1465) в org.apache.poi.ss.formula.FormulaParser.unionExpression(FormulaParser.java:1445) в org.apache.poi.ss.formula.FormulaParser.parse(FormulaParser.java:1566) в org.apache.poi.ss.formula.FormulaParser.parse(FormulaParser.java:174) в org.apache.poi.hssf.model.HSSFFormulaParser.parse(HSSFFormulaParser.java:72) в org.apache.poi.hssf.usermodel.HSSFCell.setCellFormula(HSSFCell.java:605)
Есть ли способ установить формулу, не оценивая ее немедленно?
Ответ №1:
Если Excel открыт, то вставка формулы в ячейку приведет к тому, что Excel вычислит формулу.
Единственный известный мне способ — вставить formulastring с префиксом ‘, чтобы сделать его строкой, а не формулой.
Тогда надстройка сама должна была бы преобразовать строки в формулы, выполнив поиск и замену ‘= на =
Комментарии:
1. Спасибо, я также думал об этом подходе или использовании скрипта VB для оценки, но я чувствовал, что это не так удобно для пользователя.