Java使用aspose.word合并某一文件夹下的所有doc、docx文件

aspose.word需要有license.xml许可!!

完整代码放在最后

第一步,导入依赖

      
      com.aspose  
      aspose-words  
      14.9.0  
     
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;

import com.aspose.words.Document;
import com.aspose.words.ImportFormatMode;
import com.aspose.words.License;
import com.aspose.words.SaveFormat;

【重点】第二步,获取许可

public static boolean getLicense() {
        boolean result = false;
        try {
            String xmlFilePath = "source/lic/license.xml";
            FileInputStream fis = new FileInputStream(xmlFilePath);
            License aposeLic = new License();
            aposeLic.setLicense(fis);
            result = true;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return result;
    }

xmlFilePath改成自己的许可所在位置

第三步,设置对应的输入输出路径,修改为自己需要的

            String sourceFolder = "./输出文档/"; // 要合并的文件夹路径
            String mergedFilePath = "merged_document.docx"; // 合并后的文档保存路径

合并类完整功能

public static void merge_words() {
        // 验证License
        if (!getLicense()) {
            return;
        }

        try {
            String sourceFolder = "./输出文档/"; // 要合并的文件夹路径
            String mergedFilePath = "merged_document.docx"; // 合并后的文档保存路径

            File folder = new File(sourceFolder);
            File[] files = folder.listFiles();

            int mergedFileCount = 0;

            if (files != null) {
                // 创建一个新的空白文档作为合并结果
                Document mergedDocument = new Document();
                System.out.println("当前读取到文件总数:" + files.length);

                for (File file : files) {
                    if (file.isFile() && (file.getName().toLowerCase().endsWith(".docx") || file.getName().toLowerCase().endsWith(".doc"))) {
                        // 加载当前文档
                        Document doc = new Document(file.getAbsolutePath());
                        // 输出文件名
                        String[] filePathParts = file.getAbsolutePath().split("\\\\");
                        System.out.println(filePathParts[filePathParts.length - 1]);

                        // 规范化当前文档的内容,确保格式正确
                        doc.updateFields();
                        doc.updateListLabels();
                        doc.acceptAllRevisions();

                        // 将当前文档的内容合并到结果文档中
                        mergedDocument.appendDocument(doc, ImportFormatMode.KEEP_SOURCE_FORMATTING);

                        // 输出计数
                        mergedFileCount++;
                    }
                }
                // 保存合并后的文档
                mergedDocument.save(mergedFilePath, SaveFormat.DOCX);
                System.out.println("当前已合并:" + mergedFileCount + ",总需合并:" + files.length);
                System.out.println("文件夹内的文档已合并完成。");
            } else {
                System.out.println("文件夹为空或无法访问。");
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

完整主类代码:

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;

import com.aspose.words.Document;
import com.aspose.words.ImportFormatMode;
import com.aspose.words.License;
import com.aspose.words.SaveFormat;

public class merge_for_aspose {
    public static boolean getLicense() {
        boolean result = false;
        try {
            String xmlFilePath = "source/lic/license.xml";
            FileInputStream fis = new FileInputStream(xmlFilePath);
            License aposeLic = new License();
            aposeLic.setLicense(fis);
            result = true;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return result;
    }

    public static void merge_words() {
        // 验证License
        if (!getLicense()) {
            return;
        }

        try {
            String sourceFolder = "./输出文档/"; // 要合并的文件夹路径
            String mergedFilePath = "merged_document.docx"; // 合并后的文档保存路径

            File folder = new File(sourceFolder);
            File[] files = folder.listFiles();

            int mergedFileCount = 0;

            if (files != null) {
                // 创建一个新的空白文档作为合并结果
                Document mergedDocument = new Document();
                System.out.println("当前读取到文件总数:" + files.length);

                for (File file : files) {
                    if (file.isFile() && (file.getName().toLowerCase().endsWith(".docx") || file.getName().toLowerCase().endsWith(".doc"))) {
                        // 加载当前文档
                        Document doc = new Document(file.getAbsolutePath());
                        // 输出文件名
                        String[] filePathParts = file.getAbsolutePath().split("\\\\");
                        System.out.println(filePathParts[filePathParts.length - 1]);

                        // 规范化当前文档的内容,确保格式正确
                        doc.updateFields();
                        doc.updateListLabels();
                        doc.acceptAllRevisions();

                        // 将当前文档的内容合并到结果文档中
                        mergedDocument.appendDocument(doc, ImportFormatMode.KEEP_SOURCE_FORMATTING);

                        // 输出计数
                        mergedFileCount++;
                    }
                }
                // 保存合并后的文档
                mergedDocument.save(mergedFilePath, SaveFormat.DOCX);
                System.out.println("当前已合并:" + mergedFileCount + ",总需合并:" + files.length);
                System.out.println("文件夹内的文档已合并完成。");
            } else {
                System.out.println("文件夹为空或无法访问。");
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        System.out.println("---------------------------------------");
        merge_words();
        System.out.println("-----------------完成!-----------------");
        Open_merged.main(new String[0]);
    }
}

你可能感兴趣的:(java,word,c#)