遍历读取表格图片
private static HashMap<String, Map<Integer, Map<Integer, List<XWPFPicture>>>> getAllPictures(CustomXWPFDocument doc) {
HashMap<String, Map<Integer, Map<Integer, List<XWPFPicture>>>> tableMap = new HashMap<>();
List<XWPFTable> tables = doc.getTables();
for(XWPFTable table:tables){
String docTableName = table.getRow(0).getCell(0).getText();
List<XWPFTableRow> rows = table.getRows();
HashMap<Integer, Map<Integer, List<XWPFPicture>>> rowMap = new HashMap<>();
for(int m=0;m<rows.size();m++){
HashMap<Integer, List<XWPFPicture>> cellMap = new HashMap<>();
List<XWPFTableCell> tableCells = rows.get(m).getTableCells();
for(int n=0;n<tableCells.size();n++){
XWPFTableCell cell = tableCells.get(n);
List<XWPFPicture> pictures=new ArrayList<>();
for(int i=0;i<cell.getParagraphs().size();i++){
List<XWPFRun> runs = cell.getParagraphs().get(i).getRuns();
for(XWPFRun run:runs){
String text = run.getText(run.getTextPosition());
if(text==null){
List<XWPFPicture> pictureList = run.getEmbeddedPictures();
if(pictureList.size()>0){
pictures.addAll(pictureList);
}
}
}
}
if(pictures.size()>0){
cellMap.put(n,pictures);
}
}
if(cellMap.size()>0){
rowMap.put(m,cellMap);
}
}
if(rowMap.size()>0){
tableMap.put(docTableName,rowMap);
}
}
return tableMap;
}
保存图片
private Map<Integer, Map<Integer, String>> saveImg(Map<Integer, Map<Integer, List<XWPFPicture>>> pictures) throws IOException {
Map<Integer, Map<Integer, String>> map = new HashMap<>();
for(Integer rowIndex:pictures.keySet()){
Map<Integer, List<XWPFPicture>> cellMap = pictures.get(rowIndex);
Map<Integer, String> cellStr= new HashMap<>();
for(Integer cellIndex:cellMap.keySet()){
List<XWPFPicture> pictureList = cellMap.get(cellIndex);
String picStr="";
for(XWPFPicture picture:pictureList){
String picType = picture.getPictureData().suggestFileExtension();
String picPath=imgPath+ File.separator +UUID.randomUUID()+"."+picType;
FileOutputStream out = new FileOutputStream(picPath);
out.write(picture.getPictureData().getData());
out.close();
picStr+=picPath+",";
}
cellStr.put(cellIndex,picStr.contains(",")?picStr.substring(0,picStr.lastIndexOf(",")):"");
}
map.put(rowIndex,cellStr);
}
return map;
}