Я думаю, что ваш код в порядке, мне кажется, что это ошибка в apache-poi.Он работает для меня в версии 3.17, но не работает, если я обновляюсь до 4.0.0.
Насколько я могу судить, номер строки обновляется правильно, но ссылка (cell.getReference
) - нет.
Я бы посоветовал попытаться выяснить, была ли здесь уже сообщена ошибка https://bz.apache.org/bugzilla/buglist.cgi?product=POI, а если нет, подать новый отчет об ошибке.
Тем временем, возможно, вы могли бы попробовать этообходной путь, который, кажется, делает трюк для меня.Он вызывает updateCellReferencesForShifting
в каждой ячейке таблицы.
import scala.collection.JavaConverters._
for {
row <- sheet.rowIterator().asScala.toList
cell <- row.cellIterator().asScala.toList
} yield cell.asInstanceOf[XSSFCell].updateCellReferencesForShifting("")
Поместите этот блок кода сразу после вашего звонка на shiftRows
.Нет никаких гарантий, что это не сломает что-то еще, так что используйте с осторожностью!