Mar*_*llo 3 java apache-poi cyrillic
我正在使用Apace POI 3.12 OS:Mac OS
我正在尝试使用文件中的文本创建一些docx word文档。文件中的文字是西里尔字母。
XWPFDocument doc = new XWPFDocument(new FileInputStream(new File("template.docx")));
XWPFRun run = doc.createParagraph().createRun();
run.setText(getTextFromFile("text.txt"));
run.setFontSize(14);
run.setFontFamily("Calibri");
Run Code Online (Sandbox Code Playgroud)
其中getTextFromFile(String path)-是我的函数,正在运行,返回正确的字符串。但是在生成doc时,字体样式是Times New Roman,大小为14。我试图先设置setFontFamily,然后再设置setText,但是抛出了NPE。我已经读过,setFontFamily上的该NPE在apache poi 3.8中并已在3.9中修复,但似乎并非如此。
另外,我尝试将文件中的字符串放入setText方法,并且它也无法正常工作。如果文本不是西里尔字母,则一切正常,并且字体家族已更新。
我应该怎么做才能正确处理西里尔文字?
我找到了以下解决方案,但对我而言不起作用:为什么西里尔语的Apache POI XWPFRun.setFontFamily()工作不正确?
myXWPFRun.getCTR().getRPr().getRFonts() 为null且抛出NPE。
我发现有效的解决方案:
XWPFRun run = doc.createParagraph().createRun();
run.setText("??????");
run.setFontSize(14);
run.setFontFamily("Calibri");
run.getCTR().getRPr().getRFonts().setHAnsi("Calibri");
Run Code Online (Sandbox Code Playgroud)
进行此西里尔字母提示之前,需要setFontFamily。