Belirli bir yer tutucu için arama yapmak ve JAVA ile Apache poi'yi kullanarak sözcük şablonu içindeki metin ile değiştirmek istiyorum, tüm tablolara, satırlara, hücrelere döngü yapmama ve içindeki her metni arayın.Apache POI - Word belgesi içinde yer tutucu ara
-1
A
cevap
2
Şu anda benzer bir şey yapan projemize bir bakış https://github.com/centic9/poi-mail-merge.
Temel olarak word belgesinin XML temsilini alır, değiştirir ve sonucu belgeye geri koyar.
I.I.I.e. yedek birden formatings, örneğin genelinde bölünür eğerCTBody body = doc.getDocument().getBody();
XmlOptions optionsOuter = new XmlOptions();
optionsOuter.setSaveOuter();
// read the current full Body text
String srcString = body.xmlText();
... do the replacements in srcString
XmlOptions optionsOuter = new XmlOptions();
optionsOuter.setSaveOuter();
String srcString = src.xmlText();
String prefix = srcString.substring(0,srcString.indexOf(">")+1);
final String mainPart;
// exclude template itself in first appending
if(first) {
mainPart = "";
} else {
mainPart = srcString.substring(srcString.indexOf(">")+1,srcString.lastIndexOf("<"));
}
String sufix = srcString.substring(srcString.lastIndexOf("<"));
String addPart = append.substring(append.indexOf(">") + 1, append.lastIndexOf("<"));
CTBody makeBody = CTBody.Factory.parse(prefix+mainPart+addPart+sufix);
src.set(makeBody);
Not gibi bir şey uygulaması karıştı olduğunu İkame etiketinin bir kısmı kalınsa, bu işleyiş biçiminde içseldir.
+0
sayesinde yardımcı oldu}}}} { // do something} ancak kaldırmak için herhangi bir tekniğe sahip Belgedeki belirli tablo (bölüm), $ yer tutucu olduğunu biliyor. –
Bazı örnek verileri ve kodunuzu ekler misiniz? PS: Bence tekrarlanan düşünce hücrelerinden daha kolay bir çözüm yoktur. DÜZENLEME: (bu soru) (http://stackoverflow.com/questions/3618763/find-excel-cell-by-text-in-apache-poi) (XWPFTable tbl: doc) için – edasssus
yardımcı olabilir. getTables()) {için (XWPFTableRow sıra: tbl.getRows()) {için \t (XWPFTableCell hücre: row.getTableCells()) için { \t \t (XWPFParagraph p: cell.getParagraphs()) { \t \t için (XWPFRun r: p.getRuns()) { \t \t Dize metni = r.getText (0); \t \t if (metin! = Null && (text.equalsIgnoreCase ("$ comment"))) Cevabınız için –