在Microsoft Word中查找文本并替换为Java字符串数组
我试图在word文档中找到值在Microsoft Word中查找文本并替换为Java字符串数组,java,replace,ms-word,apache-poi,Java,Replace,Ms Word,Apache Poi,我试图在word文档中找到值$beta,并用java程序中的数据数组替换。我要替换的数据是 我使用下面语法中的print语句来验证这一点是否准确。但是,当我在code保存word文档后打开它时,只有最后一个值Blue-30-90在word文档中,而不是像我在上面的代码帖子中那样,所有3个值彼此堆叠在一起 就像我上面的例子一样,这是我希望代码在被java语法替换时出现在word文档中的方式。代码应该如何读取才能实现这一点 public static void Test() { Strin
$beta
,并用java程序中的数据数组替换。我要替换的数据是
我使用下面语法中的print语句来验证这一点是否准确。但是,当我在code保存word文档后打开它时,只有最后一个值Blue-30-90
在word文档中,而不是像我在上面的代码帖子中那样,所有3个值彼此堆叠在一起
就像我上面的例子一样,这是我希望代码在被java语法替换时出现在word文档中的方式。代码应该如何读取才能实现这一点
public static void Test() {
String valuetowrite = null;
for (SPData data : qryresults) {
valuetowrite = String.join("\r\n", data.toString());
System.out.println(valuetowrite);
}
try {
XWPFDocument doc = new XWPFDocument(OPCPackage.open(SOURCE_FILE));
for (XWPFParagraph p : doc.getParagraphs()) {
List<XWPFRun> runs = p.getRuns();
if (runs != null) {
for (XWPFRun r : runs) {
String text = r.getText(0);
if (text != null) {
if (text.contains("$beta")) {
text = text.replace("$beta", valuetowrite);
r.setText(text, 0);
}
}
}
}
}
doc.write(new FileOutputStream(OUTPUT_FILE));
} catch (Exception ex) {
ex.printStackTrace();
}
}
试试这个:
String valuetowrite = "";
for (SPData data : qryresults) {
valuetowrite = valuetowrite + String.join("\r\n", data.toString());
}
System.out.println(valuetowrite);
尝试下面的代码,它正在使用
r.addBreak()代码>这将添加您想要的换行符
private static void WriteToWordWithLineBreak() {
ArrayList<String> datatowrite = new ArrayList<String>();
for (SPData data : qryresults) {
datatowrite.add(data.toString());
}
try {
XWPFDocument doc = new XWPFDocument(OPCPackage.open(SOURCE_FILE));
for (XWPFParagraph p : doc.getParagraphs()) {
System.out.println("Found paragraph "+p);
List<XWPFRun> runs = p.getRuns();
if (runs != null) {
for (XWPFRun r : runs) {
String text = r.getText(0);
if (text != null) {
if (text.contains("$beta")) {
r.setText(datatowrite.get(0), 0);
for (int i=1; i < datatowrite.size(); i++){
r.addBreak();
r.setText(datatowrite.get(i));
}
}
}
}
}
}
doc.write(new FileOutputStream(OUTPUT_FILE));
} catch (Exception ex) {
ex.printStackTrace();
}
}
private static void WriteToWordWithLineBreak(){
ArrayList datatowrite=新的ArrayList();
用于(SPData数据:qryresults){
datatowrite.add(data.toString());
}
试一试{
XWPFDocument doc=新的XWPFDocument(OPCPackage.open(SOURCE_文件));
对于(XWPFParagraph p:doc.getparagraph()){
系统输出打印项次(“找到段落”+p);
List runs=p.getRuns();
如果(运行!=null){
用于(XWPFRun r:运行){
String text=r.getText(0);
如果(文本!=null){
if(text.contains(“$beta”)){
r、 setText(datatowrite.get(0),0);
对于(int i=1;i
Word不理解\r\n-请参阅此处的线程,看看它是否能帮助您解决问题。我正在向word一次性写入一个数据列表,因此我无法像您发布的墨迹那样添加新段落。
String valuetowrite = "";
for (SPData data : qryresults) {
valuetowrite = valuetowrite + String.join("\r\n", data.toString());
}
System.out.println(valuetowrite);
private static void WriteToWordWithLineBreak() {
ArrayList<String> datatowrite = new ArrayList<String>();
for (SPData data : qryresults) {
datatowrite.add(data.toString());
}
try {
XWPFDocument doc = new XWPFDocument(OPCPackage.open(SOURCE_FILE));
for (XWPFParagraph p : doc.getParagraphs()) {
System.out.println("Found paragraph "+p);
List<XWPFRun> runs = p.getRuns();
if (runs != null) {
for (XWPFRun r : runs) {
String text = r.getText(0);
if (text != null) {
if (text.contains("$beta")) {
r.setText(datatowrite.get(0), 0);
for (int i=1; i < datatowrite.size(); i++){
r.addBreak();
r.setText(datatowrite.get(i));
}
}
}
}
}
}
doc.write(new FileOutputStream(OUTPUT_FILE));
} catch (Exception ex) {
ex.printStackTrace();
}
}