สำหรับโครงการเมื่อเร็ว ๆ นี้คุณต้องส่งออกข้อมูลบางอย่างไปยัง Word ฉันพบวิธีแก้ปัญหาออนไลน์มากมายและตอนนี้ฉันจะแบ่งปันบทสรุปของวันนี้
ในปัจจุบันมีวิธีแก้ปัญหาประมาณ 6 วิธีสำหรับการส่งออกคำจาก Java:
1. จาค็อบเป็นตัวย่อของสะพาน Java-com ซึ่งสร้างสะพานเชื่อมระหว่าง Java และ Components Com ของ Microsoft ใช้ไลบรารี DLL Dynamic Link ที่มาพร้อมกับ Jacob และโปรแกรม Call to Com บนแพลตฟอร์ม Java นั้นเกิดขึ้นได้ผ่าน JNI การสร้างไลบรารี Dll Dynamic Link ต้องการการสนับสนุนจากแพลตฟอร์ม Windows โซลูชันนี้สามารถนำไปใช้กับแพลตฟอร์ม Windows ซึ่งเป็นข้อ จำกัด เท่านั้น
2. Apache Poi รวมชุดของ API ที่สามารถใช้งานไฟล์รูปแบบต่างๆตามรูปแบบเอกสารผสม Microsoft OLE 2 ผ่าน API เหล่านี้คุณสามารถอ่านและเขียน Excel, Word และไฟล์อื่น ๆ ใน Java การประมวลผล Excel นั้นทรงพลังมากและคำพูดนั้น จำกัด อยู่ที่การอ่าน ขณะนี้สามารถใช้งานไฟล์ง่าย ๆ เท่านั้นและไม่สามารถตั้งค่าสไตล์ได้
3. Java2word เป็นส่วนประกอบ (ไลบรารีคลาส) ที่เรียกว่าเอกสาร MS Office Word ในโปรแกรม Java ส่วนประกอบนี้ให้ชุดอินเทอร์เฟซอย่างง่ายสำหรับโปรแกรม Java เพื่อเรียกใช้บริการเพื่อใช้งานเอกสาร Word บริการเหล่านี้รวมถึง: การเปิดเอกสารการสร้างเอกสารใหม่การค้นหาข้อความการแทนที่ข้อความการแทรกข้อความการแทรกรูปภาพการแทรกตารางการแทรกข้อความในบุ๊กมาร์กการแทรกรูปภาพการแทรกตาราง ฯลฯ เติมข้อมูลลงในตารางเพื่ออ่านข้อมูลตาราง เวอร์ชัน 1.1 คุณสมบัติที่ได้รับการปรับปรุง: ระบุสไตล์ข้อความระบุสไตล์ตาราง ด้วยวิธีนี้เอกสาร Word สามารถพิมพ์ได้แบบไดนามิก เป็นทางออกที่ดี
4. ITEXT เป็นโครงการ Open Source SourceForge ที่มีชื่อเสียงซึ่งเป็นห้องสมุดคลาส Java ที่ใช้ในการสร้างเอกสาร PDF ผ่าน ITEXT คุณไม่สามารถสร้างเอกสาร PDF หรือ RTF ได้ แต่ยังแปลงไฟล์ XML และ HTML เป็นไฟล์ PDF ทรงพลัง.
5. สไตล์เอาต์พุต JSP โซลูชันนี้ใช้งานง่าย แต่รูปแบบการจัดการนั้นค่อนข้างมีข้อบกพร่องเล็กน้อยและสามารถใช้การส่งออกง่าย ๆ
6. มันง่ายมากที่จะทำใน XML Word รองรับรูปแบบ XML ตั้งแต่ปี 2003 แนวคิดทั่วไปคือการใช้ Office2003 หรือ 2007 ก่อนเพื่อแก้ไขสไตล์คำจากนั้นบันทึกเป็น XML แปล XML เป็นเทมเพลต freemarker และในที่สุดก็ใช้ Java เพื่อแยกวิเคราะห์เทมเพลต FreeMarker และเอกสารเอาต์พุต เอกสารคำที่สร้างขึ้นด้วยวิธีนี้ได้รับการทดสอบอย่างสมบูรณ์สอดคล้องกับมาตรฐานสำนักงานและการควบคุมสไตล์และเนื้อหานั้นสะดวกมากและการพิมพ์จะไม่ผิดรูป เอกสารที่สร้างขึ้นนั้นเหมือนกับที่แก้ไขในสำนักงาน
จากการอ้างอิงของข้อมูลข้างต้นและความคิดเห็นออนไลน์บางอย่างในที่สุดฉันก็เลือกโซลูชันการส่งออกครั้งที่ 6 โดยใช้ XML
นี่คือ ตัวอย่างพื้นฐานในการใช้การส่งออกคำง่าย ๆ :
ในการส่งออกเนื้อหาของเทมเพลตคำส่วน Pinyin เป็นส่วนที่จะถูกแทนที่ในประเภทรหัส -
จากนั้นบันทึก Word เป็นไฟล์. xml เปิดไฟล์ค้นหาชื่อและแก้ไขเป็น $ {title} และแทนที่เนื้อหาที่จะถูกแทนที่ในทางกลับกัน จากนั้นเปลี่ยนคำต่อท้ายไฟล์. xml เป็น. FTL และนำเข้าไฟล์เทมเพลต. FTL เป็นไดเรกทอรีที่ระบุ โหลดแพ็คเกจ JAR FREEMARKER.JAR เริ่มเขียนรหัส:
รหัสหลัก:
คลาสสาธารณะ WordTest {การกำหนดค่าการกำหนดค่าส่วนตัว = null; Public WordTest () {การกำหนดค่า = การกำหนดค่าใหม่ (); configuration.setDefaultEncoding ("UTF-8"); } โมฆะคงที่สาธารณะหลัก (สตริง [] args) {test wordtest = new wordTest (); test.createword (); } โมฆะสาธารณะ createWord () {map <string, object> datamap = new hashmap <string, object> (); getData (datamap); configuration.setclassfortemplateLoading (this.getClass (), ""); // เส้นทางที่ไฟล์เทมเพลตอยู่ในเทมเพลต t = null; ลอง {t = configuration.getTemplate ("test.ftl"); // รับไฟล์เทมเพลต} catch (ioexception e) {e.printstacktrace (); } ไฟล์ outfile = ไฟล์ใหม่ ("d:/outfile"+math.random ()*10,000+". doc"); // ส่งออก File Writer out = null; ลอง {out = new bufferedWriter (ใหม่ outputStreamWriter (ใหม่ fileOutputStream (outfile))); } catch (filenotfoundexception e1) {e1.printstacktrace (); } ลอง {t.process (datamap, out); // กรอกข้อมูลการเติมลงในไฟล์เทมเพลตและส่งออกไปยังไฟล์เป้าหมาย} catch (templateException e) {e.printStackTrace (); } catch (ioexception e) {e.printstacktrace (); }} โมฆะส่วนตัว getData (แผนที่ <สตริงวัตถุ> dataMap) {dataMap.put ("ชื่อ", "ชื่อ"); datamap.put ("nian", "2016"); datamap.put ("yue", "3"); datamap.put ("ri", "6"); datamap.put ("Shenheren", "LC"); รายการ <map <string, object >> list = new ArrayList <map <string, object >> (); สำหรับ (int i = 0; i <10; i ++) {map <string, object> map = new hashmap <string, object> (); map.put ("xuehao", i); map.put ("neirong", "เนื้อหา"+i); list.add (แผนที่); } datamap.put ("รายการ", รายการ); -แก้ไขไฟล์. FTL ค้นหาตำแหน่งของรายการและเพิ่มรายการลงในไฟล์ เพิ่ม <##list list เป็น l> ไปยังส่วนหัว (เพิ่ม <#list ชื่อคอลเลกชันของคุณเป็น xxxx>) และเพิ่ม </#list> ในตอนท้าย แก้ไขเนื้อหารายการและเพิ่ม l ไปยังชื่อที่จะส่งออก ตัวอย่างเช่น xuehao แก้ไขเป็น l.xuehao นี่เป็นเหมือนการใช้ EL Expressions
ข้างต้นเป็นเรื่องเกี่ยวกับบทความนี้ฉันหวังว่ามันจะเป็นประโยชน์กับการเรียนรู้ของทุกคน