Java 復制Word文檔


本文介紹在Java程序中如何復制Word文檔。復制方法均以帶格式復制,代碼示例將從以下要點展示:

  • 復制Word正文內容,可支持包括文本、圖片、表格、超鏈接、書簽、批注、形狀、編號列表、腳注、尾注等在內的多種元素。復制時,可復制整篇文檔內容和復制指定段落內容
  • 復制Word頁眉頁腳,包括頁眉頁腳中的文本、圖片、頁碼域等等
  • 復制Word水印效果,包括文本水印、圖片水印

工具:Free Spire.Doc for Java(免費版)可下載jar包,並解壓將lib文件夾下的jar文件導入Java程序,或通過maven倉庫下載導入。參考如下導入效果:

用於測試的兩個文檔如下,將左邊文檔內容復制到右邊的文檔:

【示例1】復制Word正文內容

     1.1 復制整篇文檔內容

import com.spire.doc.*;

public class CopyDoc {
    public static void main(String[] args) {
        //加載文檔1
        Document doc1 = new Document();
        doc1.loadFromFile("test.docx");

        //加載文檔2
        Document doc2 = new Document();
        doc2.loadFromFile("target.docx");

        //遍歷文檔1中的所有子對象
        for (int i = 0; i < doc1.getSections().getCount(); i++) {
            Section section = doc1.getSections().get(i);

            for( int j = 0;j< section.getBody().getChildObjects().getCount();j++)
            {
                Object object = section.getBody().getChildObjects().get(j);

                //復制文檔1中的正文內容添加到文檔2
                doc2.getSections().get(0).getBody().getChildObjects().add(((DocumentObject) object).deepClone());
            }
        }

        //保存文檔2
        doc2.saveToFile("CopyDoc.docx", FileFormat.Docx_2013);
        doc2.dispose();
    }
}

復制效果(這里復制的效果不含水印、頁眉頁腳等內容):

1.2 復制指定段落內容

import com.spire.doc.*;

import com.spire.doc.documents.Paragraph;


public class CopyPara {
    public static void main(String[] args) {
        //加載文檔1
        Document doc1 = new Document();
        doc1.loadFromFile("test.docx");

        //獲取文檔1中的第三段
        Section section1 = doc1.getSections().get(0);
        Paragraph paragraph = section1.getParagraphs().get(2);

        //加載文檔2,獲取section
        Document doc2 = new Document();
        doc2.loadFromFile("target.docx");
        Section section2 = doc2.getSections().get(0);

        //復制文檔1中段落,添加到文檔2
        Paragraph newparagraph = (Paragraph) paragraph.deepClone();
        section2.getParagraphs().add(newparagraph);

        //保存文檔2
        doc2.saveToFile("CopyPara.docx",FileFormat.Docx_2013);
        doc2.dispose();
    }
}

段落復制結果:

 

【示例2】復制Word頁眉頁腳

 

import com.spire.doc.*;

public class CopyHeaderFooter {
    public static void main(String[] args) {
        //加載文檔1
        Document doc1 = new Document();
        doc1.loadFromFile("test.docx");

        //獲取section
        Section section1 = doc1.getSections().get(0);
        //獲取文檔1的頁眉頁腳
        HeaderFooter header = section1.getHeadersFooters().getHeader();
        HeaderFooter footer = section1.getHeadersFooters().getFooter();

        //加載文檔2
        Document doc2 = new Document();
        doc2.loadFromFile("target.docx");

        //遍歷文檔2的section
        for (int i = 0; i< doc2.getSections().getCount();i++)
        {
            Section section2 = doc2.getSections().get(i);
            //遍歷頁眉中的對象
            for(int j = 0 ; j< header.getChildObjects().getCount();j++)
            {
                //獲取頁眉中的所有子對象
                Object object1 = header.getChildObjects().get(j);
                //復制文檔1的頁眉添加到文檔2
                section2.getHeadersFooters().getHeader().getChildObjects().add(((DocumentObject) object1).deepClone());
            }

            //同理復制頁腳
            for(int z = 0 ; z< footer.getChildObjects().getCount();z++)
            {
                Object object2 = footer.getChildObjects().get(z);
                section2.getHeadersFooters().getFooter().getChildObjects().add(((DocumentObject) object2).deepClone());
            }
        }

        //保存文檔2
        doc2.saveToFile("CopyHeaderFooter.docx",FileFormat.Docx_2013);
        doc2.dispose();
    }
}

頁眉復制效果:

頁腳復制效果:

 

【示例3】復制Word水印

import com.spire.doc.*;

public class CopyWatermark {
    public static void main(String[] args) {
        //加載文檔1
        Document doc1 = new Document();
        doc1.loadFromFile("test.docx");

        //加載文檔2
        Document doc2 = new Document();
        doc2.loadFromFile("target.docx");

        //獲取文檔1的水印效果,設置到文檔2
        doc2.setWatermark(doc1.getWatermark());

        //保存文檔2
        doc2.saveToFile("CopyWatermark.docx",FileFormat.Docx_2013);
        doc2.dispose();
    }
}

水印復制效果(此方法均適用於復制文本水印或圖片水印):

 

注:對於文檔結構比較復制的Word,可綜合以上方法來進行復制,查看復制效果。

 

(完)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM