一、设置字体(中文)
// 创建 段落 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 添加图片数据的方法进行添加图片。
之前研究的。。。有时间再记录吧
以上方法是通过研究源码得到,学习中请多研究源码。。。