一、設置字體(中文)
// 創建 段落 XWPFParagraph xp = j.addParagraph(); // 創建 XWPFRun 對象 XWPFRun title = xp.createRun(); // 普通設置字體方法 title.setFontFamily("仿宋"); // ----實測以上方法只是改了ASCII碼的字體,並沒有什么軟用 // 以下是研究出來改中文字體的 // 新建 字體配置對象 CTFonts font = title.getCTR().addNewRPr().addNewRFonts(); //中文 font.setEastAsia("黑體"); // ASCII font.setAscii("仿宋"); //上一種方法setFontFamily() 其實只調用了這個方法 // 其他字符(有想法可以自己去研究一下是什么字符的): font.setCs("仿宋"); font.setHAnsi("楷體");
二、插入重復圖片時只獲取已存在圖id,而無法添加的問題
稍微描述一下這個問題吧,就是要插入一個相同的圖片時,會遇到POI去讀取原先的這個圖片id再獲取,而不是去新添加這個圖片,導致批量插入圖片時出現圖片紊亂和錯誤。
/* 先說明一下這個問題的產生原因 * 該問題是由於POI源碼中的 * XWPFDocument 類的圖片添加方法 * .addPictureData(byte[] pictureData, int format) * 在處理圖片插入時判斷已存在圖片的方法: * 當重復的圖片需要插入時,會直接調用原圖id * 而不會再往 pictures 列表里再插入,那列表的長度自然也就不會改變 */ 解決辦法,這里就文字說明一下。 1.把你 寫入 word的工具類繼承 POI 的 XWPFDocument 類,這樣在寫方法時會比較方便,因為 XWPFDocument 類的很多屬性都是 protect 的。 2.去看改方法的源碼,找到添加圖片數據的代碼,改寫成你想要的邏輯。 3.調用你自寫的 XWPFDocument 添加圖片數據的方法進行添加圖片。
之前研究的。。。有時間再記錄吧
以上方法是通過研究源碼得到,學習中請多研究源碼。。。