【发布时间】:2023-03-20 06:15:01
【问题描述】:
我一直在尝试将希伯来语数据从 excel 文件复制到文档中。 虽然字母本身被正确复制,但只要涉及到一些符号,就会变得一团糟。
例如:我得到的是 )text(
而不是 (text)这是我目前的代码:
XWPFParagraph newPara = document.insertNewParagraph(cursor);
newPara.setAlignment (ParagraphAlignment.RIGHT);
CTP ctp = newPara.getCTP();
CTPPr ctppr;
if ((ctppr = ctp.getPPr()) == null) ctppr = ctp.addNewPPr();
ctppr.addNewBidi().setVal(STOnOff.ON);
XWPFRun newParaRun = newPara.createRun();
newParaRun.setText(name);
我尝试了一些“双向文本方向支持”(bidi) 行
(从这里得到它: how change text direction(not paragraph alignment) in document in apache poi word?(XWPF))
但不是这样,也与对齐无关......
【问题讨论】:
-
无法重现您的问题。当我在链接答案中使用
run.setText("(שָׁלוֹם)");而不是run.setText("السلام عليكم");时,它可以正常工作。您能否展示一个完整的示例来重现您的问题? -
这很奇怪。我现在用你的代码和你的例子试了一下,得到了 )שלום( 事情是,在 System.out.println("(שלום)") 它完美地出现了。问题出在文档的某个地方.我已经开始用String.replace手动处理了,但显然还很不理想...
-
抱歉,那就帮不上忙了。对我来说,它可以使用我的示例代码和
run.setText("(שָׁלוֹם)");。使用apache poi是4.1.2。它创建一个 RTL 段落,其中包含一个带有文本 (שָׁלוֹם) 的运行。尝试使用Windows 10和MS Word以及使用Ubuntu Linux和Libreoffice Calc打开结果WordDocument.docx。两者都运作良好。 -
没关系,谢谢 :)
-
您是否使用
WordPad打开*.docx文件?这对我来说是)שָׁלוֹם(。但这只是说明WordPad的一个缺点,它不能正确显示双向文本。
标签: java apache-poi