- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个包含项目的表。我想在Word文档中设置项目的名称,但每个项目都在一个新行中。
所以我创建了下面的空白:
当我的文本包含“P01”时,我用名称替换文本,添加新行并设置另一个文本“P01”。
public void findAndRemplaceString(XWPFDocument doc, String champs) throws IOException {
for (XWPFParagraph p : doc.getParagraphs()) {
java.util.List<XWPFRun> runs = p.getRuns();
if (runs != null) {
for (XWPFRun r : runs) {
String text = r.getText(0);
if (text != null && text.contains("P01")) {
text = text.replace("P01", champs);
System.out.println("text replaced");
r.setText(text, 0);
//add new line
r.addBreak();
//new "P01" added
r.setText("P01");
}
}
}
}
}
以便在下面的段落中替换下一个项目名称。
@FXML
void endButton(ActionEvent event) {
String file = "model";
for (Person item : table.getItems()) {
//get the name of item
String a = item.getName();
// get the index of item
int ind0 = table.getItems().indexOf(item);
int ind1 = table.getItems().indexOf(item) + 1;
try {
XWPFDocument doc = new XWPFDocument(new FileInputStream(new File(file + ind0 + ".docx")));
findAndRemplaceString(doc, a);
FileOutputStream fileOutputStream = new FileOutputStream(new File(file + ind1 + ".docx"));
doc.write(fileOutputStream);
fileOutputStream.close();
doc.close();
} catch (Exception e) {
System.out.println("erreur " + e);
}
}
}
问题是:
它仅替换项目的名字,而不替换其他项目。它不会读取我设置的新“P01”。
最佳答案
我找到了答案,它不是最好的,但它有效。
我更改了 String[] 而不是 String 的类型,这样我就可以这样做:
public void findAndRemplaceString(XWPFDocument doc,String champs[]){
for (XWPFParagraph p : doc.getParagraphs()) {
java.util.List<XWPFRun> runs = p.getRuns();
if (runs != null) {
for (XWPFRun r : runs) {
String text = r.getText(0);
if (text != null && text.contains("P01") ) {
for (int i=0;i<champs.length;i++){
text = text.replace("P01","");
r.setText(text,0); //Replace the old text
r.setText(champs[i]);//add the new text
r.addBreak(); //new line
}
}
}
}
}
}
当我单击按钮时, void findAndReplaceString 仅被调用一次而不是循环,因此我将所有项目名称放入这样的列表中:
@FXML void endButton(ActionEvent event) {
List<String> list = new ArrayList<String>();
for (Person item : table.getItems()) {
String a = item.getName();
list.add(a);
}
String[] simpleArray = new String[list.size()];
list.toArray(simpleArray);
try{
XWPFDocument doc = new XWPFDocument(new FileInputStream(new File("input.docx")));
findAndRemplaceString(doc,simpleArray);
FileOutputStream fileOutputStream = new FileOutputStream(new File("output.docx"));
doc.write(fileOutputStream);
fileOutputStream.close();
doc.close();
}catch (Exception e) {
System.out.println("erreur " + e);
}
}
关于java - XWPFDocument 循环替换段落,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46201217/
我有一个包含项目的表。我想在Word文档中设置项目的名称,但每个项目都在一个新行中。 所以我创建了下面的空白: 当我的文本包含“P01”时,我用名称替换文本,添加新行并设置另一个文本“P01”。 pu
对于旧的 Microsoft 格式 (.doc),APACHE POI 使用 HWPFDocument。要知道此对象的页数,我只需要做: HWPFDocument document = new HW
我想将带有阿拉伯字母的word转换为pdf,经过一番研发后,我决定使用 org.apache.poi.xwpf.converter.pdf.PdfConverter 但是当我写下面的代码时,最终结果是
我没有将文档的内容附加到 CTBody 类,而是使用 XWPFDocument 类将所有数据从 Word 文档传输到空文档,但是我收到如下错误。当我将 XWPFDocument 文档转换为 pdf 时
我现在正在用java生成word文档,并且正在使用POI Apache的XWPFDocument。最终文档必须如下所示 http://sk.uploads.im/t/rtwvm.png 直到一切正常,
我正在尝试从 microsoft-word 中提取数据并将其转换为 sql 语句并将其插入 Oracle 数据库。 当 ms-word 中的数据包含通过 [Shift-Enter] 创建的新行而不只是
我们正在实现一个门户,用于处理修改和生成 Microsoft Office 2007 文档 (docx) 的请求。后端是用 Java 实现的,使用 Apache POI 作为操作 docx 文件内容的
我正在使用 apache poi 3.8 将值写入 word 模板。我用所需的值替换单词文件(键)中的特定字符串,例如word文档有一段包含key %Entry1%,我想用“Entry text li
我实际上是用 Apache POI 生成一个 Word 文档,我需要自动创建一个引用段落的目录 (TOC),以及它们的页面指示。 这是我正在使用的代码(我省略了前提条件和内部方法的主体): XWPFD
我正在对 .docx 文件进行搜索和替换,在某些情况下,替换文本包含换行符。我为此尝试了几种技术。第一个是将替换文本分成几行并执行: run.setText(lines[0], 0); for(int
我正在使用 Apache POI 方法在我的项目中创建和填充 XWPFDocument 对象,就像这样 public XWPFDocument test() { XWPFDocument doc =
我需要知道如何将 multipartFile 转换为 XWPFDocument 以便将其作为 Word 文件读取(我上传的文件实际上是 .docx ),但是我收到错误: org.springframe
我有一个 Microsoft Word .docx 文档上传到 Sharepoint。在我的 java 代码中,我已将此文档下载到一个 byte[] 中。好的。现在,我想要的是处理这个 byte[]
你知道是否有办法在段落填充文档 (XWPFDocument) 中插入段落 (XWPFParagraph) 吗? 有一种方法可以将文档中已经存在的段落“更改”为另一个段落 (XWPFDocument.s
我已经创建了一个代码,可以使用 Apache POI API 动态创建 Word 文档。该文档预计有一些行数不同的表(列数是固定的)。目前我已将每个表格放置在不同的页面上。我需要知道或者有什么方法可以
我想让 XWPFParagraph(开始)内的文本成为指向文档中另一个具体 XWPFParagraph(结束)的超链接。我找到了在 XWPFCell 内创建超链接的代码,但它不起作用(启动链接开始):
我正在尝试将文本和屏幕截图附加到现有的 Word 文件中。但每次执行以下代码时,我都会收到错误: org.apache.poi.EmptyFileException: The supplied fil
为了帮助解决我遇到的另一个问题,我在 POI Word 小部件的 postGenerationProcess 事件中测试以下代码: var jce:writeXWPFDocument = new wr
我正在尝试使用 XWPFDocument.InsertNewParagraph(XmlDocument cursor) 但该方法要求使用 XmlDocument cursor,我不知道在哪里可以找到它
我尝试从我的 Android 应用程序读取 docx 文件,但以下代码给出了 NoClassDefFoundException :org.doc4j.NameSpace try{ InputS
我是一名优秀的程序员,十分优秀!