快速 C++ 库,用于执行邮件与 Excel 数据的合并。
我们的 Mail Merge SDK 允许您使用 Excel 工作表中的数据填充 Word 模板。基于我们的 Mail Merge API ,您可以使用 C++ 创建您自己的软件解决方案,它允许您自动从 Excel 发送电子邮件并生成包含 Excel 数据的报告。
要将 Mail merge 到 Word,只需在 C++ 中执行 Mail merge 操作并将结果导出为任何支持的 Word 格式。
借助我们强大的 Mail merge API ,您可以仅使用 Word 合并模板和 Excel 中的数据在 C++ 中创建个性化文档。
如何从 Excel 使用 Mail merge :
通过我们的高保真 Mail merge API ,您还可以使用 Google 文档执行 Mail merge 操作。只需下载Word和Excel格式的必要数据,确保Word模板包含合并字段,并在 C++ 中进行邮件合并操作,类似于上一节中描述的算法。
要试用这个强大的 Mail merge web 工具,请加载一个 Word 模板,其中包含特殊的合并字段和从 Excel 转换的数据,如上所述。运行代码后,使用 C++ 将结果导出为任何格式。
以下示例显示如何执行 Mail merge 操作以在 C++ 中生成 Word 文档:
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;
};
有三个选项可以将 Aspose.Words for C++ 安装到您的开发人员环境中。请选择符合您需求的一种,并按照分步说明进行操作:
您可以使用这个 C++ 库在 Microsoft Windows 、Linux 和 macOS 操作系统上开发软件:
如果您为 Linux 或 macOS 开发软件,请查看产品文档中 fontconfig 和 mesa-glu 开源包)的信息。