Apache POI:为什么使用shiftRows时行会丢失?

时间:2019-04-18 18:22:04

标签: scala apache-poi

我正在移动Excel工作表中的行,并在工作表的开头插入新行。但是,无论我移动和插入多少行,我似乎最终都比应该少了一行。

import face_recognition
import cv2
count = 0
count +"encoding" = face_recognition.load_image_file("photo0")
count +"_face_encoding" = face_recognition.face_encodings(first_image)[0]
count += 1

上面的代码创建的电子表格只有两行而不是三行。我想念什么?

1 个答案:

答案 0 :(得分:2)

我认为您的代码很好,在我看来,这是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之后立即放置此代码块。无法保证它不会破坏其他任何东西,因此请谨慎使用!