ฉันได้ใช้ทั้งJXL (ตอนนี้ "JExcel") และApache POI ตอนแรกฉันใช้ JXL แต่ตอนนี้ฉันใช้ Apache POI
ขั้นแรกนี่คือสิ่งที่ API ทั้งสองมีฟังก์ชันการทำงานสุดท้ายเหมือนกัน:
- ทั้งสองแบบฟรี
- การจัดรูปแบบเซลล์: การจัดแนว, พื้นหลัง (สีและรูปแบบ), เส้นขอบ (ประเภทและสี), การรองรับแบบอักษร (ชื่อแบบอักษร, สี, ขนาด, ตัวหนา, ตัวเอียง, ขีดฆ่า, ขีดเส้นใต้)
- สูตร
- ไฮเปอร์ลิงก์
- พื้นที่เซลล์ที่ผสาน
- ขนาดของแถวและคอลัมน์
- การจัดรูปแบบข้อมูล: ตัวเลขและวันที่
- การตัดข้อความภายในเซลล์
- ตรึงบานหน้าต่าง
- การสนับสนุนส่วนหัว / ส่วนท้าย
- อ่าน / เขียนสเปรดชีตที่มีอยู่และใหม่
- ทั้งสองพยายามเก็บวัตถุที่มีอยู่ในสเปรดชีตที่พวกเขาอ่านให้เหมือนเดิมเท่าที่จะทำได้
อย่างไรก็ตามมีความแตกต่างมากมาย:
- บางทีข้อแตกต่างที่สำคัญที่สุดก็คือ Java JXL ไม่รองรับรูปแบบ Excel 2007+ ".xlsx" รองรับเฉพาะรูปแบบ BIFF (ไบนารี) ".xls" แบบเก่าเท่านั้น Apache POI รองรับทั้งสองแบบด้วยการออกแบบทั่วไป
- นอกจากนี้ส่วน Java ของ JXL API ได้รับการอัปเดตครั้งล่าสุดในปี 2009 (3 ปี 4 เดือนที่แล้วขณะที่ฉันเขียนสิ่งนี้) แม้ว่าจะดูเหมือนว่ามี C # API Apache POI ได้รับการดูแลอย่างต่อเนื่อง
- JXL ไม่รองรับการจัดรูปแบบตามเงื่อนไข แต่ Apache POI ทำแม้ว่าจะไม่สำคัญเท่าไหร่เพราะคุณสามารถจัดรูปแบบเซลล์ตามเงื่อนไขด้วยรหัสของคุณเองได้
- JXL ไม่รองรับการจัดรูปแบบRich Textนั่นคือการจัดรูปแบบที่แตกต่างกันภายในสตริงข้อความ Apache POI รองรับ
- JXL รองรับการหมุนข้อความบางอย่างเท่านั้น: แนวนอน / แนวตั้ง, +/- 45 องศาและแบบเรียงซ้อน Apache POI รองรับองศาจำนวนเต็มบวกซ้อนกัน
- JXL ไม่รองรับการวาดรูปทรง Apache POI ทำ
- JXL รองรับการตั้งค่า Page Setup ส่วนใหญ่เช่นแนวนอน / แนวตั้งระยะขอบขนาดกระดาษและซูม Apache POI รองรับทั้งหมดนั้นรวมทั้งการทำซ้ำแถวและคอลัมน์
- JXL ไม่รองรับ Split Panes; Apache POI ทำ
- JXL ไม่รองรับการสร้างหรือการจัดการแผนภูมิ การสนับสนุนนั้นยังไม่มีใน Apache POI แต่ API กำลังเริ่มก่อตัวขึ้นอย่างช้าๆ
- Apache POI มีชุดเอกสารและตัวอย่างที่ครอบคลุมมากกว่า JXL
นอกจากนี้ POI ไม่ได้มีแค่ API "usermodel" หลักเท่านั้น แต่ยังมี API ตามเหตุการณ์อีกด้วยหากคุณต้องการทำเพียงแค่อ่านเนื้อหาสเปรดชีต
สรุปได้ว่าเนื่องจากเอกสารประกอบที่ดีขึ้นมีคุณสมบัติมากขึ้นการพัฒนาที่ใช้งานอยู่และการสนับสนุนรูปแบบ Excel 2007+ ฉันจึงใช้ Apache POI