Excel / Apache POI: как экранировать строки для ячеек Excel? - PullRequest
0 голосов
/ 14 апреля 2020

Я пытаюсь сгенерировать XLSX-файлы в виде отчетов для клиентов с необработанными данными, поступающими из нашей системы.

Я столкнулся с проблемой, которую я не могу просто вызвать setCellValue(myText), потому что переменная myText может содержать символы, которые необходимо экранировать для Excel. Например:

  • строки, начинающиеся с =, интерпретируются как формулы
  • строки, содержащие ' где-то в тексте, интерпретируются как ограничения проверки (что странно)
  • ...

Итак, мне нужен способ записать содержимое myText в ячейку независимо от какого-либо специального Excel "magi c". Мне всегда нужно, чтобы содержимое результирующей ячейки было текстом, оно никогда не должно заканчиваться формулой (также мне нужно предотвращать «инъекцию формулы»). Поэтому мне нужно как-то избежать строкового содержимого. Важно то, что я не контролирую содержимое входной строки - это может быть буквально что угодно.

Есть ли какой-нибудь стандартный метод экранирования для Excel? Я работаю с Apache библиотекой POI.

1 Ответ

1 голос
/ 14 апреля 2020

Оказывается, с помощью этого ответа , что "избегать" в традиционном смысле не требуется.

Использование cell.getCellStyle().setQuotePrefixed(true) решает проблему.

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