Согласно многочисленным источникам, например Раздел ограничений на официальной странице , вероятно, единственный хороший способ работы с диаграммами Excel из POI - это использовать файл Excel с существующим графиком в качестве шаблона и изменять исходные ячейки, используемые диаграмма. И это прекрасно работает.
Проблема в том, что нам нужно иметь не только одну, но и несколько (и мы не знаем, сколько во время компиляции) рабочих таблиц с одной и той же диаграммой, но с разными (динамически генерируемыми) данными. Использование cloneSheet (sheetNumber) - это способ дублирования рабочего листа шаблона. Но если работает нормально, пока диаграммы не будут клонированы на листе.
Когда я пытаюсь клонировать лист с диаграммой, я получаю:
Exception in thread "main" java.lang.RuntimeException: The class org.apache.poi.hssf.record.chart.ChartFRTInfoRecord needs to define a clone method
at org.apache.poi.hssf.record.Record.clone(Record.java:71)
at org.apache.poi.hssf.model.InternalSheet.cloneSheet(InternalSheet.java:388)
at org.apache.poi.hssf.usermodel.HSSFSheet.cloneSheet(HSSFSheet.java:125)
at org.apache.poi.hssf.usermodel.HSSFWorkbook.cloneSheet(HSSFWorkbook.java:652)
UPDATE:
Я переключился на XSSF, и теперь, по крайней мере, нет исключений времени выполнения. Данные листа клонируются, но не являются диаграммами (их нет в клонированном листе).
Удалось ли кому-нибудь клонировать рабочий лист с диаграммами? Или, может быть, у кого-то есть другая идея, как решить имеющуюся у нас проблему, то есть создать диаграммы Excel для динамического числа рабочих листов с POI?