Java 複製Word文檔

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

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

工具:Free Spire.Doc for Java(免費版)可下載jar包,並解壓將lib文件夾下的jar文件導入Java程序,或經過maven倉庫下載導入。參考以下導入效果:
Java 複製Word文檔
用於測試的兩個文檔以下,將左邊文檔內容複製到右邊的文檔:
Java 複製Word文檔java

【示例1】複製Word正文內容

1.1 複製整篇文檔內容maven

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();
    }
}

複製效果(這裏複製的效果不含水印、頁眉頁腳等內容):
Java 複製Word文檔
1.2 複製指定段落內容ide

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();
    }
}

段落複製結果:
Java 複製Word文檔工具

【示例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();
    }
}

頁眉複製效果:
Java 複製Word文檔
頁腳複製效果:
Java 複製Word文檔測試

【示例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();
    }
}

水印複製效果(此方法均適用於複製文本水印或圖片水印):
Java 複製Word文檔
注:對於文檔結構比較複製的Word,可綜合以上方法來進行復制,查看複製效果。code

(完)orm

相關文章
相關標籤/搜索