使用C++中的Mail merge创建docx

用于对来自自定义数据源的docx模板和数据执行Mail merge操作的高速C++库

我们的解决方案提供了强大的平台无关API 。使用我们的Mail merge文档API为C++平台开发高级软件。这是一个强大的软件解决方案,用于合并Word和PDF格式的模板以及来自自定义数据源的数据,并使用C++进一步将结果导出为DOCX, PDF, HTML和其他流行格式。

查看代码片段

在 C++ 中 Mail merge Word 文件和 Excel 数据

快速 C++ 库,用于执行邮件与 Excel 数据的合并。

我们的 Mail Merge SDK 允许您使用 Excel 工作表中的数据填充 Word 模板。基于我们的 Mail Merge API ,您可以使用 C++ 创建您自己的软件解决方案,它允许您自动从 Excel 发送电子邮件并生成包含 Excel 数据的报告。

要将 Mail merge 到 Word,只需在 C++ 中执行 Mail merge 操作并将结果导出为任何支持的 Word 格式。

使用 C++ Mail merge 到 Word

借助我们强大的 Mail merge API ,您可以仅使用 Word 合并模板和 Excel 中的数据在 C++ 中创建个性化文档。

如何从 Excel 使用 Mail merge :

  • 创建一个带有特殊合并字段的 Word 模板,您的 Excel 数据将插入其中。
  • 将 Excel 文档转换为 CSV 文件,然后转换为适合我们的 API 解析的 JSON 文件。
  • 执行邮件合并 Word 模板和从 Excel 转换为 CSV 再到 JSON 的数据的操作。

Mail merge

通过我们的高保真 Mail merge API ,您还可以使用 Google 文档执行 Mail merge 操作。只需下载Word和Excel格式的必要数据,确保Word模板包含合并字段,并在 C++ 中进行邮件合并操作,类似于上一节中描述的算法。

要试用这个强大的 Mail merge web 工具,请加载一个 Word 模板,其中包含特殊的合并字段和从 Excel 转换的数据,如上所述。运行代码后,使用 C++ 将结果导出为任何格式。

以下示例显示如何执行 Mail merge 操作以在 C++ 中生成 Word 文档:

使用 C++中的docx模板执行Mail merge操作
上传Mail merge模板
运行代码
上传Mail merge数据
从列表中选择目标格式
dotnet add package Aspose.Words.Cpp
复制
using namespace Aspose::Words;
using namespace Aspose::Cells;

auto doc = MakeObject<Document>(u"Input1.docx");        
auto workbook = Factory::CreateIWorkbook(new String("Input2.xlsx"));
auto worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);
auto dataRange = worksheet->GetICells()->GetMaxDisplayIRange();

auto dataTable = worksheet->GetICells()->ExportArray(
   0, 0, dataRange->GetRowCount(), dataRange->GetColumnCount());
auto customersDataSource = MakeObject<BaseOperations::CustomerMailMergeDataSource>(dataTable);

doc->get_MailMerge()->Execute(customersDataSource);
doc->Save(u"Output.docx");

class ExcelDataSource : public IMailMergeDataSource
{
public:
    System::String convertCellsString(String cellsValue)
    {
        auto valCh = cellsValue.charValue();
        auto convertedString = System::String(valCh);
        String::deleteCharValue(valCh);
        return convertedString;
    }

    System::String get_TableName() override
    {
        return nullptr;
    }

    CustomerMailMergeDataSource(
     intrusive_ptr<Aspose::Cells::Systems::Array2D<Aspose::Cells::Systems::Object*>> data)
    {
        dataIn = data;

        for (int i = 0; i < data->At(0)->GetLength(); i++) {
            auto fieldName = data->GetValue(0, i)->ToString();
            m.insert({ convertCellsString(fieldName), i });
            i++;
        }

        mRecordIndex = 0;
    }        

    bool GetValue(System::String fieldName, SharedPtr<System::Object>& fieldValue) override
    {
        auto value = dataIn->GetValue(mRecordIndex, m.at(fieldName))->ToString();
        if (value == new String(""))
            return false;

        fieldValue = System::ObjectExt::Box<System::String>(convertCellsString(value));
        return true;        
    }

    bool MoveNext() override
    {
        mRecordIndex++;
        return mRecordIndex < dataIn->GetLength();            
    }

    SharedPtr<IMailMergeDataSource> GetChildDataSource(System::String tableName) override
    {
        return nullptr;            
    }

    intrusive_ptr<Aspose::Cells::Systems::Array2D<Aspose::Cells::Systems::Object*>> dataIn;
    std::unordered_map<System::String, int> m;
    int mRecordIndex;
};
运行代码

如何在docx文件中使用Mail merge

  1. 安装Aspose.Words for C++ 。
  2. 将库引用(导入库)添加到您的C++项目。
  3. 使用合并字段创建docx合并模板。
  4. 打开C++中的模板文件。
  5. 调用Execute()方法,在那里传递合并字段及其值。
  6. 调用Save()方法,传递带有所需扩展名的输出文件名。
  7. 获取Mail merge操作的结果作为Word文件。

C++库以在docx中使用Mail merge

有三个选项可以将 Aspose.Words for C++ 安装到您的开发人员环境中。请选择符合您需求的一种,并按照分步说明进行操作:

系统要求

您可以使用这个 C++ 库在 Microsoft Windows 、Linux 和 macOS 操作系统上开发软件:

  • Linux 需要 GCC >= 6.3.0 和 Clang >= 3.9.1
  • Xcode >= 12.5.1 ,macOS 需要 Clang 和 libc++

如果您为 Linux 或 macOS 开发软件,请查看产品文档中 fontconfig 和 mesa-glu 开源包)的信息。

其他支持的文件格式

您可以对其他文件格式执行Mail merge操作:

5%

订阅 Aspose 产品更新

获取直接发送到您的邮箱的每月通讯和优惠。

© Aspose Pty Ltd 2001-2024. 版权所有。