เมื่อใช้ API นี้ ระบบปฏิบัติการที่ไม่ใช่ Windows จะสามารถประมวลผลตารางข้อมูล Excel ผ่านแอปพลิเคชัน Java ล้วนๆ ได้ เนื่องจากมันถูกเขียนด้วย Java เราจึงสามารถเรียก API ผ่าน JSP และ Servlet ในเว็บแอปพลิเคชันเพื่อเข้าถึงตารางข้อมูล Excel
คัดลอกรหัสรหัสดังต่อไปนี้:
แพ็คเกจ com.yonyou.test;
นำเข้า java.io.File;
นำเข้า java.io.IOException;
นำเข้า jxl.Workbook;
นำเข้า jxl.format.Alignment;
นำเข้า jxl.format.Border;
นำเข้า jxl.format.BorderLineStyle;
นำเข้า jxl.format.Color;
นำเข้า jxl.format.UnderlineStyle;
นำเข้า jxl.write.Label;
นำเข้า jxl.write.NumberFormats;
นำเข้า jxl.write.WritableCellFormat;
นำเข้า jxl.write.WritableFont;
นำเข้า jxl.write.WritableSheet;
นำเข้า jxl.write.WritableWorkbook;
นำเข้า jxl.write.WriteException;
นำเข้า jxl.write.biff.RowsExceededException;
JxlTable คลาสสาธารณะ {
ส่วนตัวสุดท้ายคง JxlTable jxlTable = ใหม่ JxlTable();
JxlTable getInstance สาธารณะแบบคงที่ () {
กลับ jxlTable;
-
JxlTable สาธารณะ () {
-
บูลีนสาธารณะ createTable (ส่วนหัวของสตริง, เนื้อหา [] ของสตริง, FilePath ของสตริง) {
บูลีน createFlag = จริง;
หนังสือสมุดงานแบบเขียนได้;
พยายาม {
//สร้างไฟล์ Excel ตามเส้นทาง
หนังสือ = Workbook.createWorkbook (ไฟล์ใหม่ (filePath));
//สร้างแผ่นงานชื่อ "ตาราง"
แผ่น WritableSheet = book.createSheet("ตาราง", 0);
//ตั้งค่าความกว้างของคอลัมน์เป็น NO
sheet.setColumnView(1, 5);
//ลบเส้นตารางในแผ่นงานทั้งหมด
sheet.getSettings().setShowGridLines(เท็จ);
ป้ายกำกับ tempLabel = null;
// เอาต์พุตส่วนหัว
สตริง[] headerArr = header.split(",");
int headerLen = headerArr.length;
// วนรอบเพื่อเขียนเนื้อหาส่วนหัว
สำหรับ (int i = 0; i < headerLen; i++) {
tempLabel = ป้ายกำกับใหม่ (1 + i, 1, headerArr[i],
getHeaderCellStyle());
sheet.addCell(tempLabel);
-
// เอาต์พุตเนื้อหาของตาราง
int bodyLen = ความยาวลำตัว;
// วนรอบเพื่อเขียนเนื้อหาเนื้อหาของตาราง
สำหรับ (int j = 0; j <bodyLen; j++) {
สตริง[] bodyTempArr = ร่างกาย[j].split(",");
สำหรับ (int k = 0; k < bodyTempArr.length; k++) {
WritableCellFormat tempCellFormat = null;
tempCellFormat = getBodyCellStyle();
ถ้า (tempCellFormat != null) {
ถ้า (k == 0 || k == (bodyTempArr.length - 1)) {
tempCellFormat.setAlignment (การจัดตำแหน่ง CENTRE);
-
-
tempLabel = ป้ายกำกับใหม่ (1 + k, 2 + j, bodyTempArr[k],
อุณหภูมิเซลล์รูปแบบ);
sheet.addCell(tempLabel);
-
-
หนังสือ.write();
หนังสือ.ปิด();
} จับ (IOException จ) {
createFlag = เท็จ;
System.out.println("การสร้าง EXCEL ล้มเหลว!");
e.printStackTrace();
} จับ (RowsExceededException e) {
createFlag = เท็จ;
System.out.println("การสร้างการตั้งค่าหน่วย EXCEL ล้มเหลว!");
e.printStackTrace();
} จับ (WriteException e) {
createFlag = เท็จ;
System.out.println("การเขียน EXCEL ล้มเหลว!");
e.printStackTrace();
-
กลับ createFlag;
-
WritableCellFormat สาธารณะ getHeaderCellStyle () {
แบบอักษร WritableFont = ใหม่ WritableFont(WritableFont.createFont("宋体"), 10,
WritableFont.BOLD, เท็จ, UnderlineStyle.NO_UNDERLINE);
WritableCellFormat headerFormat = ใหม่ WritableCellFormat(
NumberFormats.TEXT);
พยายาม {
//เพิ่มการตั้งค่าแบบอักษร
headerFormat.setFont(แบบอักษร);
//กำหนดสีพื้นหลังของเซลล์: ส่วนหัวเป็นสีเหลือง
headerFormat.setBackground (สีสีเหลือง);
//กำหนดรูปแบบเส้นขอบตารางส่วนหัว
//เส้นตารางทั้งหมดหนาและเป็นสีดำ
headerFormat.setBorder(Border.ALL, BorderLineStyle.หนา,
สี.สีดำ);
//เนื้อหาส่วนหัวจะแสดงในแนวนอนตรงกลาง
headerFormat.setAlignment(การจัดตำแหน่ง.CENTRE);
} จับ (WriteException e) {
System.out.println("การตั้งค่ารูปแบบเซลล์ส่วนหัวล้มเหลว!");
-
กลับรูปแบบส่วนหัว;
-
WritableCellFormat สาธารณะ getBodyCellStyle () {
แบบอักษร WritableFont = ใหม่ WritableFont(WritableFont.createFont("宋体"), 10,
WritableFont.NO_BOLD, เท็จ, UnderlineStyle.NO_UNDERLINE);
WritableCellFormat bodyFormat = WritableCellFormat ใหม่ (แบบอักษร);
พยายาม {
//กำหนดสีพื้นหลังของเซลล์: ตัวตารางเป็นสีขาว
bodyFormat.setBackground(สี.WHITE);
//กำหนดรูปแบบเส้นขอบตารางส่วนหัว
//เส้นตารางทั้งหมดบางและเป็นสีดำ
bodyFormat
.setBorder(Border.ALL, BorderLineStyle.THIN, Color.BLACK);
} จับ (WriteException e) {
System.out.println("การตั้งค่ารูปแบบเซลล์เนื้อหาตารางล้มเหลว!");
-
กลับรูปแบบร่างกาย;
-
โมฆะคงที่สาธารณะ main (String [] args) {
ส่วนหัวของสตริง = "ไม่, ชื่อ, เพศ, อายุ";
สตริง [] ร่างกาย = สตริงใหม่ [4];
body[0] = "1,โอวหยาง เฟิง, ชาย, 68";
body[1] = "2,หวง เหยาซือ ชาย,67";
body[2] = "3,หงชี่กง,ตัวผู้,70";
body[3] = "4,กัวจิง,ชาย,32";
สตริง filePath = "e:/test.xls";
JxlTable testJxl = JxlTable.getInstance();
ธงบูลีน = testJxl.createTable (ส่วนหัว, เนื้อความ, filePath);
ถ้า (ตั้งค่าสถานะ) {
System.out.println("สร้างตารางสำเร็จ!!");
-
-
-
คำอธิบายทีละขั้นตอน:
อ่านไฟล์เอ็กเซล
หากต้องการอ่านไฟล์ Excel คุณควรสร้าง Wordbook ก่อน:
คัดลอกรหัสรหัสดังต่อไปนี้:
สมุดงาน wb=Workbook.getWorkbook(ไฟล์ไฟล์);
สมุดงาน wb=Workbook.getWorkbook (InputStream คือ);
จากนั้นคุณ จะได้รับแผ่นงาน :
คัดลอกรหัสรหัสดังต่อไปนี้:
Sheet[] Sheets=wb.getSheets(); // รับแผ่นงานทั้งหมด
Sheet sheet=wb.getSheet(0); //บ่งชี้ถึงการรับแผ่นงานแรก
สุดท้าย คุณสามารถรับค่าของเซลล์บางเซลล์ในแผ่นงานได้:
คัดลอกรหัสรหัสดังต่อไปนี้:
Cell cell=sheet.getCell(0,0); // รับข้อมูลของคอลัมน์แรกและแถวแรก พารามิเตอร์แรกคือคอลัมน์
String value=cell.getContents(); //รับค่าของเซลล์ในรูปแบบสตริง
String type=cell.getType(); //รับประเภทข้อมูลของเซลล์
ปิดเวิร์กโฟลว์เวิร์กบุ๊ก :
เมื่อคุณประมวลผลข้อมูลสเปรดชีต Excel เสร็จแล้ว อย่าลืมใช้เมธอด close() เพื่อปิดออบเจ็กต์ที่สร้างไว้ก่อนหน้านี้เพื่อปล่อยพื้นที่หน่วยความจำที่อยู่ในกระบวนการอ่านตารางข้อมูล ซึ่งมีความสำคัญอย่างยิ่งเมื่ออ่านข้อมูลจำนวนมาก . อ้างถึงข้อมูลโค้ดต่อไปนี้:
คัดลอกรหัสรหัสดังต่อไปนี้:
wb.ปิด();
หมายเหตุ: คุณสามารถปิด Excel ได้หลังจากดำเนินการเสร็จสิ้นเท่านั้น หลังจากปิด การเรียก Sheet s=wb.getSheet(0) จะเป็นโมฆะ
รู้เบื้องต้นเกี่ยวกับวิธีการที่ใช้กันทั่วไป :
วิธีการจัดทำโดยคลาสสมุดงาน
1. int getNumberOfSheets()
รับจำนวนแผ่นงานในสมุดงาน ตัวอย่าง:
คัดลอกรหัสรหัสดังต่อไปนี้:
jxl.Workbook rwb = jxl.Workbook.getWorkbook (ไฟล์ใหม่ (ไฟล์ต้นฉบับ));
แผ่นงาน int = rwb.getNumberOfSheets();
2. ชีต[] getSheets()
ส่งกลับอาร์เรย์ของออบเจ็กต์ชีตในสมุดงาน ตัวอย่าง:
คัดลอกรหัสรหัสดังต่อไปนี้:
jxl.Workbook rwb = jxl.Workbook.getWorkbook (ไฟล์ใหม่ (ไฟล์ต้นฉบับ));
แผ่นงาน [] แผ่นงาน = rwb.getSheets();
วิธีการจัดทำโดยอินเทอร์เฟซชีต
1. สตริง getName()
รับชื่อของชีต ตัวอย่าง:
คัดลอกรหัสรหัสดังต่อไปนี้:
jxl.Workbook rwb = jxl.Workbook.getWorkbook (ไฟล์ใหม่ (ไฟล์ต้นฉบับ));
jxl.Sheet อาร์เอส = rwb.getSheet(0);
สตริง sheetName = rs.getName();
2. int getColumns()
รับจำนวนคอลัมน์ทั้งหมดที่มีอยู่ในตารางชีต ตัวอย่าง:
คัดลอกรหัสรหัสดังต่อไปนี้:
jxl.Workbook rwb = jxl.Workbook.getWorkbook (ไฟล์ใหม่ (ไฟล์ต้นฉบับ));
jxl.Sheet อาร์เอส = rwb.getSheet(0);
int rsColumns = rs.getColumns();
3. เซลล์[] getColumn(คอลัมน์ int)
รับเซลล์ทั้งหมดในคอลัมน์หนึ่งและส่งกลับอาร์เรย์ของวัตถุเซลล์ ตัวอย่าง:
คัดลอกรหัสรหัสดังต่อไปนี้:
jxl.Workbook rwb = jxl.Workbook.getWorkbook (ไฟล์ใหม่ (ไฟล์ต้นฉบับ));
jxl.Sheet อาร์เอส = rwb.getSheet(0);
เซลล์[] เซลล์ = rs.getColumn(0);
4. int getRows()
รับจำนวนแถวทั้งหมดที่มีอยู่ในตารางชีต ตัวอย่าง:
คัดลอกรหัสรหัสดังต่อไปนี้:
jxl.Workbook rwb = jxl.Workbook.getWorkbook (ไฟล์ใหม่ (ไฟล์ต้นฉบับ));
jxl.Sheet อาร์เอส = rwb.getSheet(0);
int rsRows = rs.getRows();
5. เซลล์[] getRow(แถว int)