特此非常致謝:easypoi實現word模板
基礎的可以參考上文;
但是我的需求有一點點不一樣。
這是我的模板:就是我的t.imgs 是個list 但是很難過的是easy poi 我弄了一天,我都沒有弄出來嵌套list循環怎么輸出顯示,更難過的是我的imgs list? 還是要顯示圖片。。。。。
?我嘗試過各種辦法之后,我只能進行了重寫。。。。。
我下面的代碼 僅供參考,如果有大神有更好更直接的辦法的話,歡迎留下方式!!感恩的心!
藍色部分是我調用源碼的部分,先進行了基礎的模板渲染,保證其他字段都沒有問題的情況下。
然后我把生成的document 再拿來重新的賦值。
重寫的源碼部分:(我研究了大概的流程)
//由于我的方法是static 的 ,所以我在接下來這部分都加了static 直接調用了。
private static void parseThisRow(List<XWPFTableCell> cells, XWPFTableRow row,Map<String, Object> map) throws Exception {for(XWPFTableCell cell : cells) {parseAllParagraph(cell,cell.getParagraphs(), row, map);}}private static void parseAllParagraph(XWPFTableCell cell,List<XWPFParagraph> paragraphs, XWPFTableRow row,Map<String, Object> map) throws Exception {int findex = 0 ;for(int i = 0; i < paragraphs.size(); ++i) {XWPFParagraph paragraph = (XWPFParagraph)paragraphs.get(i);List list = (List) PoiPublicUtil.getParamsValue("alarms", map);if (paragraph.getText().indexOf("[") == 0 && paragraph.getText().indexOf("]") == (paragraph.getText().length() -1)) { parseThisParagraph(cell,paragraph, (Map<String, Object>)list.get(findex));findex++;}}}private static void parseThisParagraph(XWPFTableCell cell,XWPFParagraph paragraph, Map<String, Object> map) throws Exception {XWPFRun currentRun = null;String currentText = "";Boolean isfinde = false;List<Integer> runIndex = new ArrayList();
//get(0) 的原因是:我發現之后的run 都是換行符 所以我只拿第一部分了。changeValues(paragraph, paragraph.getRuns().get(0), currentText, (List<ImageEntity>)map.get("imgs"));}private static void changeValues(XWPFParagraph paragraph, XWPFRun currentRun, String currentText, List<ImageEntity> imgList) throws Exception {currentRun.setText("", 0);imgList.forEach((image->{ExcelMapParse.addAnImage(image,currentRun);currentRun.addTab();currentRun.addBreak();}));}
只是初步實現了這個結果。。。。
但是可能會隱藏著很多問題。。。
今天忙乎了一下午 百度了很久。。。
deepseek 也問了。。官網源碼倒是沒去問。我也沒找到吶。。。。。
可能是我太菜了。。。。
跪求各位大神多多幫忙。