في الآونة الأخيرة ، يتعين على المشروع تصدير مستند كلمة. لقد كنت أعمل بجد لفترة طويلة. لقد وجدت أنه أكثر ملاءمة وملاءمة لاستخدام قوالب علامات الجاذبية. سألخص الخطوات الرئيسية للرجوع إليها. فيما يلي مثال بسيط لتوليد ورقة الاختبار.
1. إنتاج القوالب
استخدم الكلمة أولاً لصنع قالب ، كما هو موضح في الشكل أدناه:
(لاحظ أن هناك جدولًا أعلاه ، قمت بتعيين الحدود غير المرئية) ثم حفظه كملف XML ، ثم استخدم الأداة لفتح ملف XML. يستخدم شخص ما محرر FirstObject XML ليشعر أنه ليس جيدًا مثل Notepad ++. أستخدم Notepad ++ هنا ، وذلك أساسًا لأنه يبرز ويزرع تلقائيًا مع العناصر. التأثير على النحو التالي:
المكان الأسود أعلاه هو المكان الذي نريد استبداله لاحقًا. على سبيل المثال ، إذا تم استبدال xytitle بـ $ {xytitle} ، فيجب عليك إيلاء اهتمام كبير للجدول. على سبيل المثال ، يمكن وضع الجدول الموجود أسفل أسئلة الاختيار من خلال البحث عن أسئلة متعددة الخيارات. يمثل زوج من <w: tr> </w: tr> صفًا ، أي سجل (سؤال). نحتاج هنا إلى استخدام زوج من <#level> </bish> لتضمينه من أجل ملء البيانات لاحقًا. للحصول على التفاصيل ، يرجى الرجوع إلى قواعد صفحة علامة الجاري. على سبيل المثال ، هنا أسئلة متعددة الخيارات ، لدينا سلوكان وسجل واحد ، لذلك نحن بحاجة إلى <#level> </bishs> لتضمين صفين ، كما هو موضح في: <#list table1 as plan1> <w: tr> سؤال رقم السؤال </w: tr> <w: $ {plan1.xzn} ، $ {plan1.xztest} ، $ {plan1.ans1} ، $ {plan1.ans2} ، $ {plan1.ans3} ، $ {plan1.ans4} ، لاحظ أنه تم تسمية Table1 و Plan1 هنا. يجب استخدام Table1 وبيانات التعبئة اللاحقة. بدائل أخرى هي نفسها ، والنتائج هي كما يلي:
بعد الادخار ، قم بتعديل اسم لاحقة إلى FTL ، ويتم الانتهاء من القالب.
2. تنفيذ البرمجة
يتم استخدام حزمة Freemarker-2.3.13.jar هنا ، والرمز كما يلي:
حزمة شائعة. استيراد java.io.bufferedWriter ؛ استيراد java.io.file ؛ استيراد java.io.filenotfoundException ؛ استيراد java.io.fileOutputStream ؛ استيراد java.io.ioException ؛ استيراد java.io.outputStreamWriter ؛ استيراد java.io.unsupportedencodingException ؛ استيراد java.io.writer ؛ استيراد java.util.map ؛ استيراد freemarker.template.configuration ؛ استيراد freemarker.template.template ؛ استيراد freemarker.template.template ؛ استيراد freemarker.template.templateException ؛ Class Public DocumentHandler {تكوين التكوين الخاص = NULL ؛ DocumentHandlerler () {configuration = new configuration () ؛ configuration.setDefaultEncoding ("UTF-8") ؛ } public void التي تم إنشاؤها (MAP <String ، Object> datamap ، اسم ملف السلسلة) ترمي UnsupportedEncodingException {// datamap لملء ملف البيانات الخاص بـ Modulo Script // قم بتعيين طريقة جهاز البرنامج النصي Modulo ومسارها ، يدعم FreeMarker طرقًا متعددة للمعلم. يمكنك إعادة خدمة تحميل ClassPath ، وتحميل قاعدة البيانات. // هنا يتم وضع القالب الخاص بنا تحت تكوين حزمة القالب. قالب t = فارغ ؛ Try {//test.ftl هو القالب المراد تحميله t = configuration.getTemplate ("fctestpaper.ftl") ؛ } catch (ioException e) {E.PrintStackTrace () ؛ } // إخراج مسار المستند وملف الاسم outfile = ملف جديد (اسم الملف) ؛ الكاتب خارج = فارغ ؛ fileOutputStream fos = null ؛ حاول {fos = new FileOutputStream (outfile) ؛ OutputStreamWriter OWRiter = New OutputStreamWriter (FOS ، "UTF-8") ؛ // هذا المكان لا غنى عنه لترميز التدفق. عند استدعاء بشكل منفصل باستخدام Main () ، يجب أن يكون على ما يرام ، ولكن إذا كان طلب الويب لتصدير مستند Word ، فلن يتم فتحه بعد التصدير ، وملف XML الحزمة غير صحيح. السبب الرئيسي هو أن تنسيق الترميز غير صحيح ولا يمكن تحليله. // out = new BufferedWriter (New OutputStreamWriter (FileOutputStream جديد (Outfile))) ؛ Out = New BufferWwriter (Owriter) ؛ } catch (fileNotFoundException e1) {e1.printStackTrace () ؛ } جرب {t.process (datamap ، out) ؛ out.close () ؛ fos.close () ؛ } catch (templateException e) {E.PrintStackTrace () ؛ } catch (ioException e) {E.PrintStackTrace () ؛ } //system.out.println("---------------------------------------------------------------------------------------------------------------------------- ثم قم بإعداد مكالمة البيانات ، الرمز كما يلي:
حزمة com.havenliu.document ؛ استيراد java.io.unsupportedencodingException ؛ استيراد java.util.arraylist ؛ استيراد java.util.hashmap ؛ استيراد java.util.list ؛ استيراد java.util.map ؛ الطبقة العامة الرئيسية { / ** * param args * throws UnsupportedEncodingException * / public static void main (string [] args) remswes UnsupportedEncodingException {؛ خريطة <string ، object> datamap = new hashmap <string ، Object> () ؛ datamap.put ("xytitle" ، "paper exam") ؛ int index = 1 ؛ // قائمة الاختيار من متعدد <map <string ، object >> list1 = new ArrayList <map <string ، Object >> () ؛ // قائمة أسئلة <map <string ، object >> list11 = new ArrayList <map <string ، Object >> () ؛ // index index = 1 ؛ لـ (int i = 0 ؛ i <5 ؛ i ++) {map <string ، object> map = new hashmap <string ، object> () ؛ map.put ("xzn" ، index + ".") ؛ يتيح Map.Put ("XzTest" ، "() توصيل أطراف متعددة بمضيف واحد في نفس الوقت ، ويمكن للمستخدمين المتعددين استخدام الكمبيوتر بشكل تفاعلي من خلال أطرافهم الخاصة في نفس الوقت.") ؛ map.put ("ans1" ، "A" + INDEX) ؛ map.put ("ans2" ، "b" + index) ؛ map.put ("ans3" ، "c" + index) ؛ map.put ("ans4" ، "d" + index) ؛ list1.add (MAP) ؛ خريطة <string ، object> map1 = new hashmap <string ، object> () ؛ map1.put ("fuck" ، index + ".") ؛ MAP1.PUT ("ABC" ، "A" + INDEX) ؛ list11.add (map1) ؛ فهرس ++ ؛ } datamap.put ("table1" ، list1) ؛ datamap.put ("table11" ، list11) ؛ // املأ قائمة الفراغات <map <string ، Object >> list2 = new ArrayList <map <string ، Object >> () ؛ قائمة <map <string ، object >> list12 = new ArrayList <map <string ، object >> () ؛ الفهرس = 1 ؛ لـ (int i = 0 ؛ i <5 ؛ i ++) {map <string ، object> map = new hashmap <string ، object> () ؛ map.put ("tkn" ، index + ".") ؛ map.put ("tktest" ، "نظام التشغيل هو برنامج نظام ___ ________ في نظام الكمبيوتر ، والذي يدير ويضطر _________ في نظام الكمبيوتر.") ؛ list2.add (MAP) ؛ خريطة <string ، object> map1 = new hashmap <string ، object> () ؛ map1.put ("fill" ، index + ".") ؛ map1.put ("def" ، "الجدولة المتوسطة" + index) ؛ list12.add (map1) ؛ فهرس ++ ؛ } datamap.put ("table2" ، list2) ؛ datamap.put ("Table12" ، list12) ؛ // قائمة أسئلة الحكم <map <string ، object >> list3 = new ArrayList <map <string ، Object >> () ؛ قائمة <map <string ، object >> list13 = new ArrayList <map <string ، object >> () ؛ الفهرس = 1 ؛ لـ (int i = 0 ؛ i <5 ؛ i ++) {map <string ، object> map = new hashmap <string ، object> () ؛ map.put ("pdn" ، index + ".") ؛ MAP.PUT ("PDTest" ، "جدار الحماية المركب هو نقطة العزلة بين الشبكة الداخلية والشبكة الخارجية ، وتلعب دور مراقبة وعزل تدفق الاتصال لطبقة التطبيق ، وغالبًا ما يتم دمجها في كثير من الأحيان مع وظيفة المرشحات.") ؛ list3.add (map) ؛ خريطة <string ، object> map1 = new hashmap <string ، object> () ؛ MAP1.PUT ("القاضي" ، الفهرس + ".") ؛ map1.put ("hij" ، "v" + index) ؛ list13.add (map1) ؛ فهرس ++ ؛ } datamap.put ("table3" ، list3) ؛ Datamap.put ("Table13" ، List13) ؛ // قائمة أسئلة إجابة قصيرة <map <string ، object >> list4 = new ArrayList <map <string ، Object >> () ؛ قائمة <map <string ، object >> list14 = new ArrayList <map <string ، object >> () ؛ الفهرس = 1 ؛ لـ (int i = 0 ؛ i <5 ؛ i ++) {map <string ، object> map = new hashmap <string ، object> () ؛ map.put ("jdn" ، index + ".") ؛ map.put ("jdtest" ، "وصف الفرق بين جدولة الوظائف ، والجدولة الوسيطة وجدولة العملية ، وتحليل أي مستوى من المجدول يجب أن يكون مسؤولاً عن المشكلات التالية.") ؛ list4.add (MAP) ؛ خريطة <string ، object> map1 = new hashmap <string ، object> () ؛ map1.put ("الإجابة" ، الفهرس + ".") ؛ map1.put ("xyz" ، "وصف الفرق بين جدولة الوظائف والجدولة الوسيطة وجدولة العملية ، وتحليل مستوى الجدولة الذي يجب أن يكون مسؤولاً عن المشكلات التالية.") ؛ list14.add (map1) ؛ فهرس ++ ؛ } datamap.put ("table4" ، list4) ؛ datamap.put ("table14" ، list14) ؛ MDOC MDOC = جديد MDOC () ؛ mdoc.createdoc (datamap ، "e: /outfile.doc") ؛ }} لاحظ أن المفتاح في الخريطة أعلاه يجب أن يتوافق مع القالب ، وإلا سيتم الإبلاغ عن خطأ. الآثار هي كما يلي:
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.