poi导出word
@Kent_Chen 你好,想跟你请教个问题:poi导出word 时,给表格里的中文设置 字体样式的时候不好使,给英文就可以?怎么可以给中文设置字体样式啊?急!!!!
XWPFRun newRun = para.insertNewRun(i);
//复制样式
newRun.setColor(run.getColor());
System.out.println(runText + "==" + run.getFontFamily() + "===" + run.getFontSize());
newRun.setFontFamily(run.getFontFamily());
if (run.getFontSize() > 0)
{
newRun.setFontSize(run.getFontSize());
}
newRun.setUnderline(run.getUnderline());
newRun.setBold(run.isBold());
newRun.setItalic(run.isItalic());
newRun.setStrike(run.isStrike());
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
poi导出word 毕竟没有office自己的VBA接口来的更自然,尤其是涉及到中文的问题。用PageOffice在客户端导出生成Word吧,反正生成的word文件都是要打开的,不如就真的是在客户端在线打开word的时候调用PageOffice封装的VBA接口生成文件。
我说一个思路吧,因为时间比较紧没办法尝试,不过基本上是可行的。
首先,word2007版以后,将后缀名.docx改为.zip之后,你可以在zip中看到word组成是由多个XML和一些资源附件比如图片什么的组成的。
其中documnt.xml是主题。poi和docx4j等都是通过对他的操作来完成文档展示的。所以word的样式是否生效和document.xml中的定义是直接相关的。你可以打开一个看一下就能看到里面的结构。
XWPFRun有一个getCTR方法可以获得document.xml中RUN的XML内容,getCTR下有setRPR来放置内容和样式
以下这行代码可以获取到RUN中嵌套图片的大小:
同样的通过操作CTR可以完成对样式的设置。
我下面这行代码执行是失败的,但大体上这个方向是正确的,我后面会再测试一下,好了我会在这个帖子回复。
不是字体的颜色,是字体的类型,setFontFamily("黑体"),就这个不管用,英文的文本管用,只要是中文的,设置后,打开word后就变成默认的"宋体"了,下面是我程序的关键代码:
newRun.setText(runText);
newRun.setColor(run.getColor());
newRun.setFontFamily(run.getFontFamily());
newRun.setFontSize(run.getFontSize());
newRun.setUnderline(run.getUnderline());
newRun.setBold(run.isBold());
newRun.setItalic(run.isItalic());
newRun.setStrike(run.isStrike())
我看了poi api 上说setFontFamily 只对字符集(0-127)起效用,我不知道问题究竟出在哪里,你能不能在你那试试,帮我看看这个问题呢?