ข้อได้เปรียบ:
JXL รองรับภาษาจีนได้เป็นอย่างดีและการดำเนินการนั้นง่ายและวิธีการขึ้นอยู่กับชื่อและความหมาย
JXL เป็น Java API บริสุทธิ์ซึ่งทำงานได้อย่างสมบูรณ์แบบข้ามแพลตฟอร์ม รหัสสามารถเรียกใช้บน windows หรือ linux โดยไม่ต้องเขียนใหม่
รองรับ Excel 95-2000 ทุกรุ่น (มีการกล่าวออนไลน์ว่าสามารถรองรับ Excel 2007 ได้ในปัจจุบัน แต่ยังไม่ได้ลอง)
สร้างรูปแบบมาตรฐาน Excel 2000
สนับสนุนตัวอักษรหมายเลขการดำเนินการวันที่
สามารถปรับเปลี่ยนคุณสมบัติของเซลล์ได้
รองรับภาพและแผนภูมิ แต่ API นี้มีการสนับสนุนกราฟิกและแผนภูมิ จำกัด และจดจำรูปแบบ PNG เท่านั้น
ข้อบกพร่อง:
การสนับสนุนภาพที่ไม่มีประสิทธิภาพไม่สมบูรณ์และการสนับสนุนรูปแบบที่ทรงพลังน้อยกว่า POI
กรณี:
String times = (ใหม่ simpledateFormat ("yyyymmddhhmmss")). รูปแบบ (วันที่ใหม่ ()); String fname = "System Log" + Times; // รายการชื่อไฟล์ <logs> list = logSservice.SelectForList (hql.toString ()); String Path = request.getSession (). getServletContext (). getRealPath ("/") + "xls/" + (ใหม่ simpledateFormat ("yyyymmdd"))) รูปแบบ (วันที่ใหม่ ()); ไฟล์ไฟล์ = ไฟล์ใหม่ (พา ธ ); // สร้าง if (! file.exists () &&! file.isdirectory ()) {file.mkdir (); } Response.SetContentType ("Application/vnd.ms-excel; charset = utf-8"); // // ระบุประเภทการบันทึกของไฟล์ Response.Setcharacterencoding ("UTF-8"); ExportUtil.writer_log (คำขอ, fname, รายการ, การตอบสนอง); // ดาวน์โหลดไปยัง Localวิธีการส่งออก writer_log มีดังนี้
/*** สร้างไฟล์ excel และส่งออกไปยังคอมพิวเตอร์ในท้องถิ่น* @param fname ชื่อไฟล์* @param list ข้อมูลที่จะพิมพ์นั่นคือรายการข้อมูลของการสืบค้นฐานข้อมูล*/โมฆะสาธารณะคงที่ Writer_log (httpservletrequest คำขอ/การตอบกลับ output stream response.reset (); // ล้างสตรีมเอาท์พุท // ต่อไปนี้เป็นจุดเริ่มต้นของการประมวลผลการตอบสนองชื่อไฟล์ภาษาจีน Setcharacterencoding ("UTF-8"); // ตั้งค่ารูปแบบการเข้ารหัสของเนื้อหาที่เกี่ยวข้องถ้า (ismsbrowser else fname = สตริงใหม่ (fname.getBytes ("UTF-8"), "ISO-8859-1"); Response.SetheAder ("เนื้อหา-การจัดสรร", "สิ่งที่แนบมา; filename ="+fname+". xls"); Response.SetContentType ("แอปพลิเคชัน/msexcel; charset = utf-8"); // กำหนดประเภทเอาท์พุท // การประมวลผลชื่อไฟล์ภาษาจีนสิ้นสุดลง // เวิร์กบุ๊กที่นี่นำเข้า jxl.workbook; Writableworkbook WBOOK = Workbook.createworkbook (OS); // สร้าง File WritableSheet Sheet = WBook.Createsheet ("System Log", 0); // ชื่อแผ่นงาน CellView CellView = ใหม่ CellView (); cellview.setautosize (จริง); // ตั้งค่าแผ่นขนาดอัตโนมัติ SetColumnView (0, 8); // ตั้งค่าความกว้างของเซลล์ 0 คือหมายเลขคอลัมน์ 8 คือแผ่นความกว้าง SetColumnView (1, 20); // ตั้งค่าความกว้างของเซลล์ 1 คือหมายเลขคอลัมน์ 20 คือแผ่นความกว้าง SetColumnView (2, 24); Sheet.SetColumnView (3, 20); Sheet.SetColumnView (4, 30); Sheet.SetColumnView (5, 13); Sheet.SetColumnView (6, 15); Sheet.SetColumnView (7, 32); Sheet.SetColumnView (8, 15); // ตั้งค่า FONT Excel wfont wfont = new WritableFont (writableFont.CreateFont ("宋体"), 22, writablefont.bold, false, jxl.format.underlinestyle.no_underline, jxl.format.colour.black); // ตั้งค่ารูปแบบเซลล์ WritableCellFormat titleFormat = ใหม่ writableCellFormat (WFONT); // เพิ่มตัวอักษรของเซลล์ titleformat.setAlignment (allignment.centre); // ตั้งค่าการจัดตำแหน่งศูนย์กลางของข้อความ String [] title = {"System Log"}; // ตั้งค่าส่วนหัวของตาราง excel เริ่มต้นสำหรับ (int i = 0; i <title.length; i ++) {// สิ่งที่นำเข้าที่นี่คือการนำเข้า jxl.write.label; label exceltitle = ฉลากใหม่ (i, 0, title [i], titleformat); // เนื้อหาของเซลล์ // คำสั่งพารามิเตอร์: คอลัมน์เริ่ม, แถวเริ่ม, คอลัมน์สิ้นสุด, ปลายแถวแผ่น. mergecells (0, 0, 8, 0); // ที่ตั้งแถวไหนซึ่งคอลัมน์ชีตใด ๆ addcell (exceltitle); // เพิ่มข้อมูลเซลล์} // ตั้งค่าส่วนหัวของตาราง Excel // แถวแรกนั่นคือเวลาที่แสดงพารามิเตอร์: (คอลัมน์, แถว, เนื้อหา) writablefont wfonttime = new WritableFont (writableFont.CreateFont. jxl.format.colour.black); // ตั้งค่ารูปแบบเซลล์ WritableCellFormat ttletime = ใหม่ writableCellFormat (wfonttime); // เพิ่มตัวอักษรของเซลล์ ttletime.setAlignment (การจัดตำแหน่ง); // ตั้งค่าการจัดตำแหน่งศูนย์กลางของข้อความ DateFormat df = ใหม่ simpledateFormat ("yyyy-mm-dd"); // sheet.setColumnView (1, CellView); // ตั้งค่าความกว้างของคอลัมน์โดยอัตโนมัติตาม content label contentDate = ใหม่ป้ายกำกับ (0, 1, df.format (วันที่ใหม่ ()), ttletime); // เนื้อหาของเซลล์ // sheet.mergecells (16, 1, 18, 1); // ตำแหน่งที่แถวและคอลัมน์อยู่ในแถวนั่นคือตำแหน่งที่ผสาน หากไม่มีการผสานคุณไม่สามารถเขียน sheet.addcell (contentDate); // เพิ่มข้อมูลเซลล์ // จุดสิ้นสุดของแถวแรก // แถวที่สองแสดงเงื่อนไขแถบชื่อบาร์ wfont2 = new writableFont (writableFont.CreateFont ("宋体"), 11, writable.bold, false, jxl.format.underlinestyle // ตั้งค่ารูปแบบเซลล์ WritableCellFormat titleFormat2 = new writableCellFormat (WFONT2); // เพิ่มฟอนต์เซลล์ TitleFormat2.setBorder (Border.All, BorderlineStyle.thin); // ตั้งค่าเส้นขอบของเส้นขอบ; TitleFormat2.setAlignment (การจัดตำแหน่ง Centre); // ตั้งค่าการจัดตำแหน่งตรงกลางของข้อความ; titleformat2.setverticalalignment (Verticalalignment.centre); // ตั้งค่าศูนย์กลางแนวตั้ง; label content2a = ฉลากใหม่ (0, 2, "หมายเลขซีเรียล", titleFormat2); // เนื้อหาของเซลล์-1st Grid Label Content2b = ใหม่ฉลาก (1, 2, "ชื่อผู้ใช้", titleFormat2); // เนื้อหาของเซลล์-2nd Grid Label Content2c = ใหม่ฉลาก (2, 2, "บันทึกเวลา", titleFormat2); // เนื้อหาของเซลล์-3rd grid label content2c = ใหม่ป้ายกำกับ (2, 2, "เวลาบันทึก", titleformat2); // เนื้อหาของเซลล์-3rd grid label content2c = ใหม่ป้ายกำกับ (2, 2, "เวลาบันทึก", titleformat2); // เนื้อหาของเซลล์-3rd Grid Label Content2d = ใหม่ฉลาก (3, 2, "Operation Module", TitleFormat2); // เนื้อหาของเซลล์-4th Grid Label Content2E = ใหม่ฉลาก (4, 2, "เนื้อหาการดำเนินการ", titleFormat2); // เนื้อหาของเซลล์-5 กริดฉลาก content2f = ฉลากใหม่ (5, 2, "การดำเนินการดำเนินการ", titleFormat2); // เนื้อหาของเซลล์-6th Grid Label Content2G = ใหม่ป้ายกำกับ (6, 2, "Operator IP", TitleFormat2); // เนื้อหาของเซลล์-7th Grid Label Content2H = ใหม่ฉลาก (7, 2, "Operation Organization", TitleFormat2); // เนื้อหาของเซลล์-8 กริดฉลาก content2i = ฉลากใหม่ (8, 2, "note", titleformat2); // เนื้อหาของเซลล์-แผ่นกริด 9th.Mergecells (0, 1, 8, 1); /*sheet.mergecells(0, 2, 0, 4); // ตำแหน่งที่แถวและคอลัมน์อยู่ในแถวนั่นคือตำแหน่งของการผสานหากไม่มีการผสานคุณไม่สามารถเขียนได้ (นี่คือบรรทัดเริ่มต้นที่ 3 ถึงแถว 5 คอลัมน์ 1) แผ่น Mergecells (1, 2, 1, 4); // ตำแหน่งที่แถวและคอลัมน์อยู่ในแถวนั่นคือตำแหน่งของการผสานหากไม่มีการผสานคุณไม่สามารถเขียนได้ (นี่คือบรรทัดเริ่มต้น 3 ถึงแถว 5 คอลัมน์ 2) แผ่น Mergecells (2, 2, 2, 4); // ตำแหน่งที่แถวและคอลัมน์อยู่ในแถวนั่นคือตำแหน่งที่ผสานหากไม่มีการผสานคุณไม่สามารถเขียนได้ (นี่คือบรรทัดเริ่มต้น 3 ถึงแถว 5 คอลัมน์ 3) แผ่นงาน Mergecells (3, 2, 3, 4); // ตำแหน่งที่แถวและคอลัมน์อยู่ในแถวนั่นคือตำแหน่งที่ผสานหากไม่มีการผสานคุณไม่สามารถเขียนได้ (นี่คือบรรทัดเริ่มต้น 3 ถึงแถว 5 คอลัมน์ 4) แผ่นงาน Mergecells (4, 2, 4, 4); // ตำแหน่งที่แถวและคอลัมน์อยู่ในแถวนั่นคือตำแหน่งที่ผสานหากไม่มีการผสานคุณไม่สามารถเขียนได้ (นี่คือบรรทัดเริ่มต้น 3 ถึงแถว 5 คอลัมน์ 5) แผ่นงาน Mergecells (5, 2, 5, 4); // ตำแหน่งที่แถวและคอลัมน์อยู่ในแถวนั่นคือตำแหน่งที่ผสานหากไม่มีการผสานคุณไม่สามารถเขียนได้ (นี่คือบรรทัดเริ่มต้น 3 ถึงแถว 5 คอลัมน์ 6) แผ่นงาน Mergecells (6, 2, 6, 4); // ตำแหน่งที่แถวและคอลัมน์อยู่ในแถวนั่นคือตำแหน่งที่ผสานหากไม่มีการผสานคุณไม่สามารถเขียนได้ (นี่คือบรรทัดเริ่มต้น 3 ถึงแถว 5 คอลัมน์ 7) แผ่นงาน Mergecells (7, 2, 7, 4); // ตำแหน่งที่แถวและคอลัมน์อยู่ในแถวนั่นคือตำแหน่งที่ผสานหากไม่มีการผสานคุณไม่สามารถเขียนได้ (นี่คือบรรทัดเริ่มต้น 3 ถึงแถว 5 คอลัมน์ 8) แผ่นงาน Mergecells (8, 2, 8, 4); // ตำแหน่งที่แถวและคอลัมน์อยู่ในแถวนั่นคือตำแหน่งของการผสาน หากไม่มีการผสานคุณไม่สามารถเขียนได้ (นี่คือบรรทัดเริ่มต้น 3 ถึงแถว 5 คอลัมน์ 9) แผ่นงาน Mergecells (9, 2, 9, 4); // ตำแหน่งที่แถวและคอลัมน์อยู่ในแถวนั่นคือตำแหน่งของการผสาน หากไม่มีการผสานคุณไม่สามารถเขียนได้ (นี่คือบรรทัดเริ่มต้น 3 ถึงแถว 5 คอลัมน์ 10) แผ่นงาน Mergecells (10, 2, 12, 3); // ตำแหน่งที่แถวและคอลัมน์อยู่ในแถวนั่นคือตำแหน่งของการผสาน หากไม่มีการผสานคุณไม่สามารถเขียนได้ (นี่คือบรรทัดเริ่มต้น 3 ถึงแถว 4 คอลัมน์ 11-13) แผ่น Mergecells (13, 2, 15, 3); // ตำแหน่งที่แถวและคอลัมน์อยู่ในแถวแรกนั่นคือตำแหน่งที่ผสานหากไม่มีการผสานคุณไม่สามารถเขียนได้ (นี่คือบรรทัดเริ่มต้น 3 ถึงแถว 4 คอลัมน์ 14-16) แผ่นงาน Mergecells (16, 2, 16, 4); // ตำแหน่งที่แถวและคอลัมน์อยู่ในแถวแรกนั่นคือตำแหน่งที่ผสานหากไม่มีการผสานคุณไม่สามารถเขียนได้ (นี่คือบรรทัดเริ่มต้น 3 ถึงแถว 5 คอลัมน์ 17) แผ่นงาน Mergecells (17, 2, 17, 4); // ตำแหน่งที่แถวและคอลัมน์อยู่ในแถวแรกนั่นคือตำแหน่งที่ผสานหากไม่มีการผสานคุณไม่สามารถเขียนได้ (นี่คือบรรทัดเริ่มต้นที่ 3 ถึงแถว 5 คอลัมน์ 18) แผ่น Mergecells (18, 2, 18); // ตำแหน่งที่แถวและคอลัมน์อยู่ในแถวแรกนั่นคือตำแหน่งที่ผสาน หากไม่มีการผสานคุณไม่สามารถเขียนได้ (นี่คือบรรทัดเริ่มต้น 3 ถึง 5 คอลัมน์ 19) */ sheet.addcell (Content2a); // เพิ่มแผ่นข้อมูลเซลล์แรก ADDCELL (Content2B); // เพิ่มแผ่นข้อมูลเซลล์ที่สอง ADDCELL (Content2C); // เพิ่มแผ่นข้อมูลเซลล์ที่สาม ADDCELL (Content2D); // เพิ่มแผ่นข้อมูลเซลล์ที่สี่ ADDCELL (Content2E); // เพิ่มแผ่นข้อมูลเซลล์ที่ห้า ADDCELL (Content2F); // เพิ่มแผ่นข้อมูลเซลล์ที่หก ADDCELL (Content2G); // เพิ่มแผ่นข้อมูลเซลล์ที่เจ็ด ADDCELL (Content2H); // เพิ่มแผ่นข้อมูลเซลล์ 8th.addcell (Content2i); // เพิ่มข้อมูลเซลล์ที่ 9 writablefont wf = new writableFont (writableFont.CreateFont ("安安"), 11, writableFont.NO_BOLD, FALSE, JXL.Format.UnderlineStyle.no_underline, jxl.format.colour.black); // ตั้งค่าสไตล์ตัวอักษรของเซลล์ writableCellformat wcf = new writableCellformat (WF); // เพิ่มตัวอักษรเซลล์ wcf.setBorder (Border.all, Borderlinystele.thin); // ตั้งค่าเส้นขอบ-เส้นแข็ง; wcf.setverticalalignment (Verticalalignment.centre); // ตั้งค่าการจัดตำแหน่งแนวตั้ง wcf.setAlignment (การจัดตำแหน่ง center); // ตั้งค่าการจัดตำแหน่งตรงกลางแนวนอนของข้อความ; wcf.setWrap (จริง); // Automatic Line Wrap Wrapedfont WF1 = new WritableFont (WritableFont.CreateFont ("安体"), 11, WritableFont.No_Bold, False, JXL.Format.UnderlinestyLe.no_underline, jxl.format.colour.black); // ตั้งค่าแบบอักษรเซลล์ WritableCellFormat WCF1 = ใหม่ writableCellFormat (WF1); // เพิ่มฟอนต์เซลล์ wcf1.setBorder (border.left, borderlinestyle.thin); // ตั้งค่าเส้นขอบของเส้นขอบ; wcf1.setverticalalignment (Verticalalignment.centre); // ตั้งค่าการจัดตำแหน่งแนวตั้ง WCF1.SetAlignment (การจัดตำแหน่ง Centre); // ตั้งค่าการจัดตำแหน่งตรงกลางแนวนอนของข้อความ; // ข้อมูลที่ได้รับจากฐานข้อมูลลูปต่อไปนี้ int c = 1; // หมายเลขบรรทัดของ excel ที่ใช้สำหรับวนซ้ำ iterator it = list.iterator (); ในขณะที่ (it.hasnext ()) {บันทึก tc = (logs) it.next (); DateFormat dfmt = ใหม่ simpledateFormat ("yyyy.mm"); สตริง xh = string.valueof (c); if (xh == null) {xh = ""; } label content0 = ฉลากใหม่ (0, c+2, xh, wcf); // ชื่อสตริงหมายเลขซีเรียล = tc.getUserName (); if (name == null) {name = ""; } content1 = ฉลากใหม่ (1, c+2, ชื่อ, wcf); // username string xrpresent = tc.getLogtime (); if (xrpresent == null) {xrpresent = ""; } LABEL CONTENT2 = ฉลากใหม่ (2, C+2, XRPRESENT, WCF); // บันทึกเวลาสตริง czmodel = tc.getModel (); if (czModel == null) {czModel = ""; } LABEL Content3 = ฉลากใหม่ (3, C+2, CZMODEL, WCF); // การดำเนินการโมดูลสตริงเพศ = tc.getContent (); if (sex == null) {sex = ""; } LABEL Content4 = ป้ายใหม่ (4, C+2, Sex, WCF); // การดำเนินการสตริงเนื้อหาวันเกิด = tc.getOperate (); if (วันเกิด == null) {วันเกิด = ""; } LABEL Content5 = ป้ายใหม่ (5, C+2, วันเกิด, WCF); // การดำเนินการ action String Nation = tc.getip (); if (Nation == NULL) {Nation = ""; } LABEL CONTENT6 = ฉลากใหม่ (6, C+2, Nation, WCF); // ตัวดำเนินการ IP String Origin = tc.getOrgName (); if (Origin == NULL) {Origin = ""; } label content7 = ฉลากใหม่ (7, C+2, Origin, WCF); // หรือองค์กรสตริง bplace = tc.getRemark (); if (bplace == null) {bplace = ""; } label content8 = ฉลากใหม่ (8, c+2, bplace, wcf); // หมายเหตุสตริง abc = ""; LABEL CONTENT9 = ฉลากใหม่ (9, C+2, ABC, WCF1); // หมายเหตุชีท SetRowView (C+2, 600); // ตั้งค่าแผ่นความสูงบรรทัด SetRowView (C+2, 600); Sheet.setRowView (C+2, 600); Sheet.setRowView (C+2, 600); Sheet.setRowView (C+2, 600); Sheet.setRowView (C+2, 600); Sheet.setRowView (C+2, 600); Sheet.setRowView (C+2, 600); Sheet.setRowView (C+2, 600); Sheet.Mergecells (0, C+2, 0, C+2); // Mergecells (1, C+2, 0, C+2); // Mergecells (A, B, C, D) แผ่นฟังก์ชั่นการผสานเซลล์ Mergecells (2, C+2, 0, C+2); // แผ่นหมายเลขคอลัมน์เซลล์ Mergecells (3, C+2, 0, C+2); // B เซลล์หมายเลขบรรทัดบรรทัด Mergecells (4, C+2, 0, C+2); // C เริ่มต้นจากเซลล์ [a, b], รวมลงไปที่แผ่นคอลัมน์ c แผ่น Mergecells (5, C+2, 0, C+2); // d จากเซลล์ [a, b], รวมลงไปที่ Row d sheet.mergecells (6, c+2, 0, c+2); Sheet.Mergecells (7, C+2, 0, C+2); Sheet.Mergecells (8, C+2, 0, C+2); Sheet.Mergecells (9, C+2, 0, C+2); sheet.addcell (content0); sheet.addcell (เนื้อหา 1); sheet.addcell (Content2); sheet.addcell (content3); sheet.addcell (Content4); sheet.addcell (Content5); sheet.addcell (content6); sheet.addcell (content7); sheet.addcell (content8); sheet.addcell (เนื้อหา 9); C ++; } wbook.write (); // เขียนไปยังไฟล์ wbook.close (); os.close (); } catch (exception e) {โยน paikeException ใหม่ ("ข้อผิดพลาดไฟล์ส่งออก"); -ตัวอย่างคำอธิบายข้างต้นของการส่งออกข้อมูล JXL ไปยัง Excel เป็นเนื้อหาทั้งหมดที่ฉันแบ่งปันกับคุณ ฉันหวังว่าคุณจะให้ข้อมูลอ้างอิงและฉันหวังว่าคุณจะสนับสนุน wulin.com มากขึ้น