إنشاء docx باستخدام Mail merge في C++

مكتبة C++ عالية السرعة لتنفيذ عملية Mail merge لقوالب وبيانات docx من مصدر بيانات مخصص

يوفر حلنا API مستقلة قوية لمنصة. استخدم API مستند Mail merge لتطوير برنامج عالي المستوى لمنصة C++. هذا حل برمجي قوي لدمج القوالب في تنسيقات Word و PDF والبيانات من مصادر البيانات المخصصة وكذلك تصدير النتيجة إلى DOCX, PDF, HTML والتنسيقات الشائعة الأخرى باستخدام C++.

اعرض مقتطف الشفرة

ملف Word Mail merge وبيانات Excel في C++

مكتبة Fast C++ لتنفيذ دمج البريد مع بيانات Excel.

يسمح لك Mail Merge SDK الخاص بنا بملء قالب Word ببياناتك من ورقة Excel. استنادًا إلى Mail Merge API، يمكنك إنشاء حل برمجي خاص بك باستخدام C++، والذي يسمح لك بأتمتة رسائل البريد الإلكتروني من Excel وإنشاء تقارير باستخدام بيانات Excel.

Mail merge من Excel إلى Word، ما عليك سوى تنفيذ عملية Mail merge في C++ وتصدير النتيجة إلى أي تنسيقات Word مدعومة.

Mail merge من Excel إلى Word باستخدام C++

من خلال Mail merge API القوية الخاصة بنا، يمكنك إنشاء مستندات مخصصة في C++ باستخدام قالب دمج Word وبيانات من Excel فقط.

كيفية استخدام Mail merge من Excel:

  • قم بإنشاء قالب Word مع حقول دمج خاصة سيتم إدراج بياناتك من Excel فيها.
  • قم بتحويل مستند Excel إلى ملف CSV ثم إلى ملف JSON مناسب للتحليل بواسطة API الخاص بنا.
  • قم بإجراء عملية البريد بدمج قالب Word والبيانات المحولة من Excel إلى CSV ثم إلى JSON.

Mail merge مع محرر مستندات Google

من خلال Mail merge API عالية الدقة، يمكنك أيضًا إجراء عملية Mail merge باستخدام محرر مستندات Google. ما عليك سوى تنزيل البيانات الضرورية بتنسيق Word و Excel، وتأكد من احتواء قالب Word على حقول دمج وتنفيذ عملية دمج المراسلات في C++، على غرار الخوارزمية الموضحة في القسم السابق.

لتجربة أداة ويب Mail merge القوية هذه، قم بتحميل قالب Word مع حقول دمج خاصة وبيانات من Excel تم تحويلها كما هو موضح أعلاه. بعد تشغيل الكود، قم بتصدير النتيجة إلى أي تنسيق باستخدام C++.

يوضح المثال التالي كيفية تنفيذ عملية Mail merge لإنشاء مستند Word في C++:

تنفيذ عملية Mail merge باستخدام قالب docx في C++
تحميل قالب 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;
};
قم بتشغيل الكود

كيفية استخدام Mail merge في ملفات docx

  1. ثبّت Aspose.Words for C++.
  2. أضف مرجع مكتبة (استيراد المكتبة) إلى مشروع C++ الخاص بك.
  3. إنشاء docx نموذج دمج مع دمج الحقول.
  4. افتح ملف النموذج في C++.
  5. قم باستدعاء طريقة Execute()، وقم بتمرير حقول الدمج وقيمها هناك.
  6. قم باستدعاء طريقة Save()، وقم بتمرير اسم ملف الإخراج بالامتداد المطلوب.
  7. الحصول على نتيجة عملية Mail merge كملف Word.

مكتبة C++ لاستخدام Mail merge في docx

هناك ثلاثة خيارات لتثبيت Aspose.Words for C++ في بيئة المطور لديك. يرجى اختيار واحد يناسب احتياجاتك واتبع التعليمات خطوة بخطوة:

متطلبات النظام

يمكنك استخدام مكتبة C++ هذه لتطوير البرامج على Microsoft Windows و Linux و macOS:

  • GCC >= 6.3.0 و Clang >= 3.9.1 مطلوبان لنظام التشغيل Linux
  • Xcode >= 12.5.1، Clang و libc++ مطلوبة لنظام التشغيل macOS

إذا قمت بتطوير برنامج لنظام التشغيل Linux أو macOS، فالرجاء التحقق من المعلومات حول التبعيات الإضافية للمكتبة (fontconfig mesa-glu مفتوحة المصدر) في وثائق المنتج.

تنسيقات الملفات المدعومة الأخرى

يمكنك إجراء عملية Mail merge لتنسيقات الملفات الأخرى:

5%

اشترك في Aspose Product Updates

احصل على رسائل إخبارية وعروض شهرية يتم تسليمها مباشرة إلى صندوق البريد الخاص بك.

© Aspose Pty Ltd 2001-2024. كل الحقوق محفوظة.