【Spire.Doc】合并 Word 文档,将多个文档合并为一个

使用C#

 

在文档后添加新页合并

private void SaveToFileInsertText(string sourcePath, string insertPath, string saveToPath)
{
    Document doc = new Document(sourcePath);
    doc.InsertTextFromFile(insertPath, FileFormat.Docx);
    doc.SaveToFile(saveToPath, FileFormat.Docx);
    doc.Close();
}

 

Spire版本:5.1

百度云下载:
链接:https://pan.baidu.com/s/1_YijYkjogH1bZ30gbpFMCQ
提取码:k5zn

 

相关连接:https://www.evget.com/article/2018/8/21/28382.html

 

扩展

将一个文件夹的多个文档合并为一个文档

 

合成方法:

将文件夹中的文档两两合并,比如第一次时,第1个和第2个合并,第3个和第4个合并,依次类推;第2次时,将第一次的合并好的文件,按照第一次合并的方法,再次合并,直到只有一个文件,即合并完成。

 

合并过程,需要对中间文件进行规范命名,才可以认出是哪一次合并生成的文件,再进行下一步的合并。

 

例如,本次测试有36个文件,共合并6次,中间会产生一些中间文件,当合成到只有一个文件时,即完成

 

代码:

/// <summary>
/// 合并报告,高效率
/// </summary>
/// <param name="tableNamePath">所有文档路径</param>
/// <param name="combineDoc">最后文档保存路径</param>
public void CombineDoc(string tableNamePath, string combineDoc)
{
    int num = 1;
    while (true)
    {
        DirectoryInfo root = new DirectoryInfo(tableNamePath);
        FileInfo[] files = root.GetFiles();

        if (num != 1)
        {
            files = files.Where(d => d.FullName.Contains("-" + (num - 1) + "-")).ToArray();
        }

        //当只有一个文件时,为最终结果
        if (files.Length == 1)
        {
            SaveToFile(files[0].FullName, combineDoc);

            Console.WriteLine("合并文档... 【" + tableNamePath + "】 完成...");

            break;
        }

        //判断文件数量是否为偶数
        bool isEven = files.Length % 2 == 0;

        if (isEven)
        {
            for (int i = 0; i < files.Length; i += 2)
            {
                SaveToFileInsertText(files[i].FullName, files[i + 1].FullName, Path.Combine(tableNamePath, "report-" + num + "-" + i / 2 + ".docx"));
            }
        }
        else
        {
            for (int i = 0; i < files.Length - 1; i += 2)
            {
                SaveToFileInsertText(files[i].FullName, files[i + 1].FullName, Path.Combine(tableNamePath, "report-" + num + "-" + i / 2 + ".docx"));
            }

            SaveToFile(files[files.Length - 1].FullName, Path.Combine(tableNamePath, "report-" + num + "-" + (files.Length - 1) / 2 + ".docx"));
        }

        Console.WriteLine("合并文档... 【" + tableNamePath + "】 第" + num + "次 完成...");

        num++;
    }
}

/// <summary>
/// 保存文档
/// </summary>
private void SaveToFile(string sourcePath, string saveToPath)
{
    Document doc = new Document(sourcePath);
    doc.SaveToFile(saveToPath, FileFormat.Docx);
    doc.Close();
}

/// <summary>
/// 合并两个文档,并保存为另一个文档
/// </summary>
private void SaveToFileInsertText(string sourcePath, string insertPath, string saveToPath)
{
    Document doc = new Document(sourcePath);
    doc.InsertTextFromFile(insertPath, FileFormat.Docx);
    doc.SaveToFile(saveToPath, FileFormat.Docx);
    doc.Close();
}

完成...

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 精致技术 设计师:CSDN官方博客 返回首页