سؤال

لدي مشروع أرغب في إنشاء تقرير تصدير فيه بتنسيق MS Word.وسيتضمن التقرير الصور/الرسوم البيانية والجداول والنص.ما هي أفضل طريقة للقيام بذلك؟أدوات الطرف الثالث؟ما هي تجاربك؟

هل كانت مفيدة؟

المحلول

ستعتمد الإجابة قليلاً على ما إذا كان التطبيق يعمل على خادم أو إذا كان يعمل على جهاز العميل.إذا كنت تعمل على خادم، فستحتاج إلى استخدام أحد تنسيقات إنشاء المكاتب المستندة إلى XML نظرًا لوجود مشكلات معروفة عندما باستخدام أتمتة Office على الخادم.

ومع ذلك، إذا كنت تعمل على جهاز العميل، فلديك خيار أحدهما باستخدام أتمتة المكاتب أو باستخدام تنسيق Office Open XML (انظر الروابط أدناه)، الذي يدعمه Microsoft Office 2000 والإصدارات الأحدث إما محليًا أو من خلال حزم الخدمة.أحد العوائق لهذا هو أنك قد لا تتمكن من تضمين بعض أنواع الرسوم البيانية أو الصور التي ترغب في عرضها.

إن أفضل طريقة للقيام بالأشياء ستعتمد بشكل واضح على مقدار الوقت المتاح لك للاستثمار في التنمية.إذا اتبعت مسار Office Automation، فهناك عدد لا بأس به من البرامج التعليمية الجيدة التي يمكن العثور عليها عبر Google وهي سهلة التعلم إلى حد ما.ومع ذلك، فإن تنسيق Open Office XML جديد إلى حد ما، لذا قد تجد منحنى التعلم أعلى قليلاً.

معلومات حول Office Open XML

نصائح أخرى

مكتبة دوكس المجانية لإنشاء مستندات DocX، تم تطويره بشكل فعال وسهل الاستخدام للغاية.نظرًا لاحتضار CodePlex، انتقل المشروع إلى جيثب.

لقد أمضيت الأسبوع الماضي أو نحو ذلك في متابعة الأمور بسرعة مكتب مفتوح XML.لدينا تطبيق قاعدة بيانات يقوم بتخزين بيانات الاستطلاع التي نريد الإبلاغ عنها في برنامج Microsoft Word.يمكنك بالفعل إنشاء ملفات Word 2007 (docx) من البداية في C#.يتضمن الإصدار 2 من Open XML SDK تطبيقًا رائعًا يسمى Document Reflector والذي سيوفر فعليًا رمز C# لإعادة إنشاء مستند Word بالكامل.يمكنك استخدام أجزاء من التعليمات البرمجية أو كلها، واستبدال البتات التي تريد تغييرها بسرعة.يحتوي ملف المساعدة المتضمن في SDK أيضًا على بعض نماذج التعليمات البرمجية الجيدة.

ليست هناك حاجة لبرنامج Office Interop أو أي برنامج Office آخر على الخادم - التنسيقات الجديدة هي 100% XML.

هل فكرت في استخدام .RTF كبديل؟

وهو يدعم تضمين الصور والجداول بالإضافة إلى النص، ويتم فتحه افتراضيًا باستخدام Microsoft Word، وعلى الرغم من أن مجموعة ميزاته محدودة للغاية (باستثناء أي تنسيق متقدم) لشيء يبدو وملمسًا ويفتح مثل مستند Word، إلا أنه ليس بعيدًا.

ربما لن يلاحظ المستخدمون النهائيون ذلك.

لقد وجدت اطرح الكلمات أن تكون الأفضل لأنه لا يمكن لأي شخص فتح ملفات بتنسيق Office Open XML/*.docx ويمكن أن يكون التشغيل المتداخل لـ Word وأتمتة Word عربات التي تجرها الدواب.يدعم Aspose Words معظم أنواع ملفات المستندات بدءًا من الإصدار Word 97 وما بعده.

إنه مكون مدفوع الأجر ولكنه يتمتع بدعم كبير.البديل الآخر كما تم اقتراحه بالفعل هو RTF.

لإنشاء مستندات Word باستخدام Office Automation ضمن .NET، وتحديداً في C# أو VB.NET:

  1. أضف ال Microsoft.Office.Interop.Word مرجع التجميع لمشروعك.الطريق هو \Visual Studio Tools لـ Office\PIA\Office11\Microsoft.Office.Interop.Word.dll.

  2. اتبع مثال رمز Microsoft الذي يمكنك العثور عليه هنا: http://support.microsoft.com/kb/316384/en-us.

شميدتي، إذا كنت تريد إنشاء مستندات Word على خادم ويب، فستحتاج إلى ترخيص لكل منها عميل (وليس فقط خادم الويب).راجع هذا القسم في الأول وصلة نشر روب:

"إلى جانب المشكلات التقنية، يجب عليك أيضًا التفكير في مشكلات الترخيص.تمنع إرشادات الترخيص الحالية استخدام تطبيقات Office على الخادم لخدمة طلبات العملاء، ما لم يكن لدى هؤلاء العملاء أنفسهم نسخ مرخصة من Office.إن استخدام الأتمتة من جانب الخادم لتوفير وظائف Office لمحطات العمل غير المرخصة لا تغطيه اتفاقية ترخيص المستخدم النهائي (EULA)."

إذا كنت تستوفي متطلبات الترخيص، فأعتقد أنك ستحتاج إلى استخدام COM Interop - على وجه التحديد، تجميعات التشغيل المتداخل الأساسية لـ Office XP.

تحقق من VSTO (أدوات Visual Studio للمكتب).من السهل جدًا إنشاء قالب Word، وإدخال جزيرة بيانات XML فيه، ثم إرسالها إلى العميل.عندما يفتح المستخدم المستند في Word، يقرأ Word ملف XML ويحوله إلى WordML ويعرضه.سوف ترغب في إلقاء نظرة على فئة ServerDocument لمكتبة VSTO.ليس هناك حاجة إلى ترخيص إضافي من تجربتي.

لقد حققت نجاحًا جيدًا باستخدام Syncfusion Backoffice DocIO الذي يدعم تنسيقات doc وdocx.

في الإصدارات السابقة، لم يكن يدعم كل شيء في Word، ولكن وفقًا لقائمتك، قمنا باختباره باستخدام الجداول والنصوص كأسلوب لدمج البريد وقد عمل بشكل جيد.

لست متأكدًا من استيراد الصور بالرغم من ذلك.على صفحتهم الدعائية http://www.syncfusion.com/products/DocIO/Backoffice/features/default.aspx انها تقول

يتمتع BlockQuote Essential Docio بدعم لإدخال كل من صور العددية والمتجهات في المستند ، في جميع التنسيقات تقريبًا.تعد الصور النقطية وgif وpng وtiff بعضًا من أنواع الصور الشائعة المدعومة.

لذلك يستحق النظر.

كما ذكر آخرون، يمكنك إنشاء مستند RTF، وهناك بعض مكتبات RTF الجيدة المتوفرة لـ .net مثل http://www.codeproject.com/KB/string/nrtftree.aspx

لقد واجهت هذه المشكلة وأنشأت مكتبة صغيرة لهذا الغرض.تم استخدامه في عدة مشاريع ثم قررت نشره.إنه مجاني وبسيط للغاية ولكني متأكد من أنه سيساعدك في هذه المهمة.استدعاء مكتبة Office Open XML، http://invoc.co.nz/products/docx.aspx.

لقد كتبت أ سلسلة منشورات المدونة حول إنشاء مستندات Open XML WordprocessingML.تتمثل الطريقة التي أتبعها في إنشاء مستند قالب يحتوي على عناصر تحكم في المحتوى، وفي كل عنصر تحكم في المحتوى، تكتب تعبير XPath الذي يحدد كيفية استرداد المحتوى من مستند XML الذي يحتوي على البيانات التي تحرك عملية إنشاء المستند.الكود مجاني ومرخص بموجب قانون ترخيص Microsoft المتبادل (Ms-RL).في نفس سلسلة منشورات المدونة، قمت أيضًا باستكشاف طريقة يمكنك من خلالها كتابة كود C# في عناصر التحكم في المحتوى.تقوم عملية إنشاء المستند بعد ذلك بمعالجة مستند القالب وإنشاء برنامج C# الذي يقوم بإنشاء المستندات المطلوبة.إحدى مزايا هذا النهج هو أنه يمكنك استخدامه أي مصدر البيانات كمصدر للبيانات لعملية إنشاء المستندات.تم ترخيص هذا الرمز أيضًا بموجب ترخيص Microsoft Reciprocal.

أفعل هذا الشيء بالضبط حاليا.

إذا لم يكن المستند كبيرًا جدًا، ولا يحتوي على صور وما شابه، فأنا أقوم بتخزينه كملف RTF مع #MergeFields# فيه واستبداله ببساطة بالمحتوى، وإرسال النتيجة إلى المستخدم على هيئة RTF.

بالنسبة للمستندات الأكبر حجمًا، بما في ذلك الصور والصور المُدرجة ديناميكيًا، أقوم بحفظ مستند Word الأولي كملف صفحة ويب واحدة *.mht يحتوي على #MergeFields# مرة أخرى.ثم أفعل نفس ما ورد أعلاه.باستخدام هذا، يمكنني بسهولة عرض DataTable مع بعض علامات جدول Html الأساسية واستبدال أحد #MergeFields# بجدول كامل.

يمكن تخزين الصور على الخادم الخاص بك وعنوان URL المضمن في المستند أيضًا.

ومن المثير للاهتمام أن تنسيقات ملفات Office 2007 الجديدة هي في الواقع ملفات مضغوطة - إذا قمت بإعادة تسمية الامتداد إلى .zip، فيمكنك فتحها ورؤية محتوياتها.هذا يعني أنك يجب أن تكون قادرًا على تبديل المحتوى مثل الصور داخل وخارج باستخدام مكتبة C#zip البسيطة.

@ ديل راجان:سيعمل ذلك مع تنسيق Office 2003 XML، ولكنه ليس قابلاً للنقل (مثل ملفات .doc أو .docx على سبيل المثال).

لقراءة/كتابة تلك العناصر، ستحتاج إلى استخدام عنصر تحكم ActiveX الخاص بمكتبة كائنات Word:

http://www.codeproject.com/KB/aspnet/wordapplication.aspx

@ داني سنفور:في الواقع، تصف هذه المقالة ما سيصبح تنسيق Office Open XML الذي أجاب به روب.سأولي المزيد من الاهتمام للروابط التي أنشرها الآن للتأكد من أنها ليست قديمة.لقد قمت بالفعل بالبحث عن WordML، وهو الاسم الذي كان يطلق عليه في ذلك الوقت.

أعتقد أن تنسيق Office Open XML هو أفضل طريقة للبدء.

ليبر أوفيس يدعم أيضًا التفاعل بدون رأس عبر واجهة برمجة التطبيقات (API).للأسف لا يوجد حاليًا الكثير من المعلومات حول هذه الميزة حتى الآن..:(

يمكنك أيضًا استخدام منشئ مستندات Word.يمكن استخدامه للنشر من جانب العميل أو من جانب الخادم.من وصف المشروع:

WordDocumentGenerator هي أداة لإنشاء مستندات Word من القوالب باستخدام Visual Studio 2010 وفتح XML 2.0 SDK.يساعد WordDocumentGenerator في إنشاء مستندات Word على حد سواء غير قادرة على التحديث بالإضافة إلى قابلة للتحديث استنادًا إلى القوالب المحددة مسبقًا باستخدام تغييرات الحد الأدنى من التعليمات البرمجية.يتم استخدام عناصر التحكم في المحتوى كأصحاب نائب لتوليد المستندات.وهو يدعم ورد 2007 وورد 2010.

إلتقطه: http://worddocgenerator.codeplex.com/

تنزيل SDK: http://www.microsoft.com/en-us/download/details.aspx?id=5124

بديل آخر هو مهب الريح دوكجن (إخلاء المسؤولية - أنا المؤسس).باستخدام Windward، يمكنك تصميم القالب في Word، بما في ذلك الصور والجداول والرسوم البيانية وأجهزة القياس وأي شيء آخر تريده.يمكنك تعيين العلامات حيث يتم إدراج البيانات من مصدر بيانات XML أو SQL (بما في ذلك وظائف مثل حلقات forEach، والاستيراد، وما إلى ذلك).ثم قم بإنشاء التقرير إلى DOCX، PDF، HTML، وما إلى ذلك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top