gpt4 book ai didi

java - 无法使用 Apache POI 读取 .doc 文件的整个单元格

转载 作者:行者123 更新时间:2023-12-02 12:16:42 25 4
gpt4 key购买 nike

在我的一个项目中,我需要使用 Apache POI 从 .doc 文件中读取图像。对于每一行,都有一个包含图像(一个、两个、三个等)的单元格,我需要将其与文本数据一起读出。

所以我尝试了以下代码

 FileInputStream fileInputStream = new FileInputStream(file);

POIFSFileSystem poifsFileSystem = new POIFSFileSystem(fileInputStream);

HWPFDocument doc = new HWPFDocument(poifsFileSystem);

Range range = doc.getRange();

PicturesTable pictureTable = doc.getPicturesTable();

PicturesSource pictures = new PicturesSource(doc);

Paragraph tableParagraph = range.getParagraph(0);

Table table = range.getTable(tableParagraph);

TableRow row = table.getRow(0);

TableCell cell1 = row.getCell(0);
for (int j = 0; j < cell1.getParagraph(0).numCharacterRuns(); j++) {

CharacterRun cr = cell1.getParagraph(0).getCharacterRun(j);
if (pictureTable.hasPicture(cr)) {
logger.debug("Has picture If--");
Picture picture = pictures.getFor(cr);
logger.debug("pictures Description--" + picture.getDescription());

}
}

现在我能够读取特定单元格的图像,但问题是我无法读取单元格的所有图像意味着,我能够读取文本之前的图像和文本之间的图像,但是我无法阅读文字后面的图像。示例“image_1---一些文本---image_2一些文本---.image_3”。现在在这种情况下我无法仅读取 image_3。我应该做什么,这样我也可以读取 image_3 。我搜索了很多,但到目前为止还没有运气。希望有人知道如何做到这一点。 提前致谢。

最佳答案

对于 HWPFDocument,我也遇到了问题。如果您有机会在处理之前将 Word 文档更改为 docx,下面是一个适用于 XWPFDocuments 的示例:

    FileInputStream fileInputStream = new FileInputStream(file);

XWPFDocument doc = new XWPFDocument(fileInputStream);
for (XWPFTable tbl : doc.getTables()) {
for (XWPFTableRow row : tbl.getRows()) {
for (XWPFTableCell cell : row.getTableCells()) {
for (XWPFParagraph para : cell.getParagraphs()) {
for (XWPFRun run : para.getRuns()) {
for (XWPFPicture pic : run.getEmbeddedPictures()) {
System.out.println(pic.getPictureData());
}

}
}
}
}
}

关于java - 无法使用 Apache POI 读取 .doc 文件的整个单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46116075/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com