ฉันอยากศึกษาวิธีการใช้ Java เพื่อใช้งาน Excel มาเป็นเวลานานแล้ว วันนี้ฉันไม่มีอะไรทำเลยฉันเลยเรียนรู้เพียงเล็กน้อยและสรุปได้ หากต้องการใช้ java เพื่อใช้งาน Excel มีเครื่องมือโอเพ่นซอร์ส - jxl.jar ซึ่งสามารถดาวน์โหลดได้จาก http://sourceforge.net/projects/jexcelapi/files/
1. อ่านเนื้อหาของไฟล์ Excel
คัดลอกรหัสรหัส ดังต่อไปนี้:
/** *//**อ่านเนื้อหาของไฟล์ Excel
* ไฟล์ @param ที่จะอ่าน
* @กลับ
-
สตริงคงที่สาธารณะ readExcel (ไฟล์ไฟล์)...{
StringBuffer sb = StringBuffer ใหม่ ();
สมุดงาน wb = null;
พยายาม...{
//สร้างวัตถุสมุดงาน
wb=Workbook.getWorkbook(ไฟล์);
} catch (BiffException e) ...{
e.printStackTrace();
} จับ (IOException e) ...{
e.printStackTrace();
-
ถ้า(wb==null)
กลับเป็นโมฆะ;
//หลังจากได้รับวัตถุสมุดงาน คุณสามารถรับวัตถุแผ่นงาน (แผ่นงาน) ผ่านวัตถุนั้นได้
แผ่นงาน [] แผ่นงาน = wb.getSheets();
if(sheet!=null&&sheet.length>0)...{
//วนซ้ำแต่ละแผ่นงาน
for(int i=0;i<sheet.length;i++)...{
//รับจำนวนแถวในแผ่นงานปัจจุบัน
int rowNum = แผ่น [i].getRows();
สำหรับ(int j=0;j<rowNum;j++)...{
//รับเซลล์ทั้งหมดในแถวปัจจุบัน
เซลล์ [] เซลล์ = แผ่น [i] .getRow (j);
if(cells!=null&&cells.length>0)...{
//วนซ้ำแต่ละเซลล์
สำหรับ(int k=0;k<cells.length;k++)...{
//อ่านค่าของเซลล์ปัจจุบัน
สตริง cellValue = เซลล์[k].getContents();
sb.ผนวก(cellValue+" ");
-
-
sb.ผนวก(" ");
-
sb.ผนวก(" ");
-
-
//สุดท้ายก็ปิดทรัพยากรและปล่อยหน่วยความจำ
wb.ปิด();
กลับ sb.toString();
-
2. เขียนลงไฟล์ Excel
มีหลายรูปแบบที่นี่ เช่น การทำให้เนื้อหาเป็นตัวหนา การเพิ่มสีบางสี เป็นต้น คุณสามารถอ้างอิงถึง API ของ jxl
คัดลอกรหัสรหัส ดังต่อไปนี้:
/**สร้างไฟล์ Excel
* @param fileName ชื่อของไฟล์ Excel ที่จะสร้าง
-
โมฆะสาธารณะคง writeExcel (ชื่อไฟล์สตริง)...{
WritableWorkbook wwb = null;
พยายาม...{
//ขั้นแรกให้ใช้วิธีโรงงานของคลาสสมุดงานเพื่อสร้างวัตถุสมุดงาน (สมุดงาน) แบบเขียนได้
wwb = Workbook.createWorkbook (ไฟล์ใหม่ (ชื่อไฟล์));
} จับ (IOException e) ...{
e.printStackTrace();
-
if(wwb!=null)...{
//สร้างแผ่นงานแบบเขียนได้
//เมธอด createSheet ของเวิร์กบุคมีสองพารามิเตอร์ ตัวแรกคือชื่อของเวิร์กชีต และตัวที่สองคือตำแหน่งของเวิร์กชีตในเวิร์กบุ๊ก
WritableSheet ws = wwb.createSheet("sheet1", 0);
//เริ่มเพิ่มเซลล์ด้านล่าง
for(int i=0;i<10;i++)...{
สำหรับ(int j=0;j<5;j++)...{
//สิ่งที่ต้องสังเกตที่นี่คือใน Excel พารามิเตอร์แรกแสดงถึงคอลัมน์และพารามิเตอร์ตัวที่สองแสดงถึงแถว
Label labelC = new Label(j, i, "นี่คือแถว "+(i+1)+", "+(j+1)+" คอลัมน์");
พยายาม...{
//เพิ่มเซลล์ที่สร้างขึ้นลงในแผ่นงาน
ws.addCell(labelC);
} catch (RowsExceededException e) ...{
e.printStackTrace();
} catch (WriteException e) ...{
e.printStackTrace();
-
-
-
พยายาม...{
//เขียนจากหน่วยความจำลงไฟล์
www.write();
//ปิดทรัพยากรและปล่อยหน่วยความจำ
www.ปิด();
} จับ (IOException e) ...{
e.printStackTrace();
} catch (WriteException e) ...{
e.printStackTrace();
-
-
-
หมายเหตุ: หากคุณต้องการเขียนเนื้อหาลงใน Excel ที่มีอยู่ คุณต้องดำเนินการดังนี้:
คัดลอกรหัสรหัส ดังต่อไปนี้:
หนังสือสมุดงานที่สามารถเขียนได้ = null;
พยายาม...{
// Excel รับไฟล์
สมุดงาน wb = Workbook.getWorkbook(ไฟล์ใหม่("D:/test.xls"));
// เปิดสำเนาของไฟล์และเขียนข้อมูลที่ระบุกลับไปยังไฟล์ต้นฉบับ
หนังสือ = Workbook.createWorkbook (ไฟล์ใหม่ ("D:/test.xls"), wb);
//เพิ่มแผ่นงาน
แผ่นเขียนได้ = book.getSheet("sheet1");
sheet.addCell(ป้ายกำกับใหม่ (8,3, "มีบางอย่างถูกเพิ่มในแถวที่ 3, คอลัมน์ 8"));
//TODO ละเว้นส่วนต่อไปนี้
} catch (ข้อยกเว้น e)...{
e.printStackTrace();
-
3. ค้นหาว่าไฟล์ Excel มีคำสำคัญบางคำหรือไม่
คัดลอกรหัสรหัส ดังต่อไปนี้:
/** ค้นหาว่าไฟล์บางไฟล์มีคำสำคัญบางคำหรือไม่
* ไฟล์ @param ที่ต้องการค้นหา
* @param keyWord คีย์เวิร์ดที่ต้องการค้นหา
* @กลับ
-
searchKeyWord แบบบูลีนคงที่สาธารณะ (ไฟล์ไฟล์, คีย์เวิร์ดสตริง)...{
ความละเอียดบูลีน = เท็จ;
สมุดงาน wb = null;
พยายาม...{
//สร้างวัตถุสมุดงาน
wb=Workbook.getWorkbook(ไฟล์);
} catch (BiffException e) ...{
ส่งคืนความละเอียด;
} จับ (IOException e) ...{
ส่งคืนความละเอียด;
-
ถ้า(wb==null)
ส่งคืนความละเอียด;
//หลังจากได้รับวัตถุสมุดงาน คุณสามารถรับวัตถุแผ่นงาน (แผ่นงาน) ผ่านวัตถุนั้นได้
แผ่นงาน [] แผ่นงาน = wb.getSheets();
บูลีน breakSheet = เท็จ;
if(sheet!=null&&sheet.length>0)...{
//วนซ้ำแต่ละแผ่นงาน
for(int i=0;i<sheet.length;i++)...{
ถ้า (breakSheet)
หยุดพัก;
//รับจำนวนแถวในแผ่นงานปัจจุบัน
int rowNum = แผ่น [i].getRows();
บูลีนแบ่งแถว = เท็จ;
สำหรับ(int j=0;j<rowNum;j++)...{
ถ้า (แบ่งแถว)
หยุดพัก;
//รับเซลล์ทั้งหมดในแถวปัจจุบัน
เซลล์ [] เซลล์ = แผ่น [i] .getRow (j);
if(cells!=null&&cells.length>0)...{
บูลีนเบรกเซลล์ = เท็จ;
//วนซ้ำแต่ละเซลล์
สำหรับ(int k=0;k<cells.length;k++)...{
ถ้า (แบ่งเซลล์)
หยุดพัก;
//อ่านค่าของเซลล์ปัจจุบัน
สตริง cellValue = เซลล์[k].getContents();
ถ้า(cellValue==null)
ดำเนินการต่อ;
if(cellValue.contains(keyWord))...{
ความละเอียด = จริง;
เบรกเซลล์ = จริง;
แบ่งแถว = จริง;
เบรกชีต = จริง;
-
-
-
-
-
-
//สุดท้ายก็ปิดทรัพยากรและปล่อยหน่วยความจำ
wb.ปิด();
ส่งคืนความละเอียด;
-
4. แทรกไอคอนรูปภาพลงใน Excel
การแทรกรูปภาพทำได้ง่าย ดูโค้ดต่อไปนี้:
คัดลอกรหัสรหัส ดังต่อไปนี้:
/** *//**แทรกรูปภาพลงใน Excel
* @param dataSheet แผ่นงานที่จะแทรก
* @param col รูปภาพเริ่มต้นจากคอลัมน์นี้
* @param row ภาพเริ่มจากแถวนี้
* @param width จำนวนคอลัมน์ที่รูปภาพครอบครอง
* @param height คือจำนวนแถวที่รูปภาพครอบครอง
* @param imgFile ไฟล์รูปภาพที่จะแทรก
-
โมฆะคงที่สาธารณะ insertImg (WritableSheet dataSheet, int col, int row, int width,
int height, ไฟล์ imgFile)...{
WritableImage img = WritableImage ใหม่ (คอลัมน์, แถว, ความกว้าง, ความสูง, imgFile);
dataSheet.addImage(img);
-
ความคิดเห็นของโค้ดข้างต้นมีความชัดเจนอยู่แล้ว และอาจไม่จำเป็นต้องอธิบายอีกต่อไป เราสามารถตรวจสอบได้ด้วยโปรแกรมต่อไปนี้:
คัดลอกรหัสรหัส ดังต่อไปนี้:
พยายาม...{
//สร้างสมุดงาน
สมุดงาน WritableWorkbook = Workbook.createWorkbook (ไฟล์ใหม่ ("D:/test1.xls"));
//แผ่นงานที่จะแทรก
WritableSheet imgSheet = workbook.createSheet("รูปภาพ",0);
//ไฟล์รูปภาพที่จะแทรก
ไฟล์ imgFile = ไฟล์ใหม่ ("D:/1.png");
//รูปภาพถูกแทรกลงในเซลล์แรกของแถวที่สอง โดยมีขนาดความยาวและความกว้างละ 6 เซลล์
insertImg(imgSheet,0,1,6,6,imgFile);
สมุดงาน.write();
สมุดงาน.ปิด();
} จับ (IOException e) ...{
e.printStackTrace();
} catch (WriteException e) ...{
e.printStackTrace();
-
แต่ jxl รองรับเฉพาะรูปภาพในรูปแบบ PNG และไม่รองรับรูปแบบ jpg หรือ gif
5. แทรกส่วนหัวและส่วนท้าย
โดยทั่วไป ส่วนหัวและส่วนท้ายจะแบ่งออกเป็นสามส่วน ด้านซ้าย ตรงกลาง และด้านขวา คุณสามารถใช้โค้ดต่อไปนี้เพื่อแทรกส่วนหัวและส่วนท้ายได้
คัดลอกรหัสรหัส ดังต่อไปนี้:
/** *//**เพิ่มส่วนหัวและส่วนท้ายลงใน Excel
* @param dataSheet แผ่นงานที่จะเพิ่มในส่วนหัว
* @param ออกไปแล้ว
* @พารามเซ็นเตอร์
* @param ถูกต้อง
-
setHeader โมฆะคงที่สาธารณะ (แผ่นข้อมูลที่สามารถเขียนได้, สตริงซ้าย, ศูนย์สตริง, สตริงด้านขวา) ... {
HeaderFooter hf = ใหม่ HeaderFooter();
hf.getLeft().ผนวก(ซ้าย);
hf.getCentre().ผนวก(กลาง);
hf.getRight().ผนวก(ขวา);
//เพิ่มส่วนหัว
dataSheet.getSettings().setHeader(hf);
//เพิ่มส่วนท้าย
//dataSheet.getSettings().setFooter(hf);
-
เราสามารถทดสอบวิธีนี้ด้วยรหัสต่อไปนี้:
คัดลอกรหัสรหัส ดังต่อไปนี้:
พยายาม...{
//สร้างสมุดงาน
สมุดงาน WritableWorkbook = Workbook.createWorkbook (ไฟล์ใหม่ ("D:/test1.xls"));
//แผ่นงานที่จะแทรก
WritableSheet dataSheet = workbook.createSheet("เพิ่มส่วนหัว",0);
ExcelUtils.setHeader(dataSheet, "chb", "2007-03-06", "หน้า 1 จาก 3");
สมุดงาน.write();
สมุดงาน.ปิด();
} จับ (IOException e) ...{
e.printStackTrace();
} catch (WriteException e) ...{
e.printStackTrace();
-