ในบทความก่อนหน้าของเราเราได้ผ่านรายละเอียดของ Apache Poi ซึ่งเป็น Java API โอเพ่นซอร์สสำหรับการทำงานกับรูปแบบไฟล์ Microsoft ในบทความนี้เราจะผ่านส่วนประกอบ Apache Poi สำหรับการทำงานกับสมุดงาน Excel นอกจากนี้เรายังจะแสดงวิธีการใช้ Apache Poi เพื่อสร้างไฟล์ Excel และเพิ่มแผ่นลงในนั้นโดยใช้ไลบรารี Java นี้
apache poi java apis สำหรับการเข้าถึงรูปแบบไฟล์ excel
Apache Poi Java API จัดเตรียมส่วนประกอบแยกต่างหากสำหรับการทำงานกับรูปแบบไฟล์ Excel สองรูปแบบที่แตกต่างกัน นี่คือ:
- HSSF (รูปแบบสเปรดชีตที่น่ากลัว)-สำหรับการทำงานกับรูปแบบไฟล์ Excel 97-2003
- XSSF (รูปแบบสเปรดชีต XML) - สำหรับการทำงานกับ Excel 2007 และรูปแบบไฟล์ในภายหลัง โดยเฉพาะ HSSF ให้คุณอ่านไฟล์ XLS ในขณะที่ XSSF ให้คุณอ่าน XLS และ XLSX ไฟล์ API ทั้งสองนี้ช่วยให้คุณสร้างอ่านและจัดการไฟล์ Excel จากภายในแอปพลิเคชัน Java ของคุณโดยไม่ต้องลงรายละเอียดของรูปแบบไฟล์พื้นฐาน
จะสร้างไฟล์ Excel XLSX ใน Java ได้อย่างไร?
ในตัวอย่างนี้เราจะผ่านรายละเอียดของการใช้ Apache Poi XSSF เพื่อสร้างไฟล์ XLSX ในแอปพลิเคชัน Java ของเรา ในขั้นตอนนี้เราคิดว่าคุณได้ติดตั้งและกำหนดค่า Apache Poi API ในแอปพลิเคชัน Java ของคุณแล้ว หากคุณยังไม่ได้ทำคุณสามารถเยี่ยมชม ติดตั้ง Apache Poi สำหรับ Java และทำตามขั้นตอน
ขั้นตอนในการสร้างสมุดงาน Excel โดยใช้ apache poi
การสร้างสมุดงาน Excel โดยใช้ Apache Poi API สำหรับ Java นั้นง่ายและง่ายและสามารถทำได้โดยใช้ขั้นตอนต่อไปนี้
- สร้างสมุดงานโดยใช้ xssfworkbook คลาส
- ปิดสตรีมเอาต์พุต รหัส Java เพื่อสร้างสมุดงาน Excel โดยใช้ Apache Poi มีดังนี้
XSSFWorkbook wb = new XSSFWorkbook();
...
try (FileOutputStream fileOut = new FileOutputStream("workbook.xlsx")) {
wb.write(fileOut);
}
รหัสด้านบนจะสร้างสมุดงาน Excel ในรูปแบบไฟล์ XLSX อย่างไรก็ตามหากคุณจะเปิดสมุดงานในขั้นตอนนี้คุณจะได้รับข้อผิดพลาดต่อไปนี้
เหตุผลนี้ก็คือสมุดงาน Excel ที่ใช้ Apache Poi โดยไม่มีแผ่นงานใด ๆ ให้ข้อผิดพลาดนี้ เพื่อแก้ไขปัญหานี้เราต้องเพิ่มแผ่นงานอย่างน้อยหนึ่งแผ่นลงในไฟล์ Excel ที่สร้างขึ้น
เพิ่มเวิร์กชีทไปยังสมุดงาน Excel กับ Apache Poi ใน Java
สิ่งนี้นำเราไปสู่ขั้นตอนที่เราต้องเพิ่มแผ่นงานลงในสมุดงานเพื่อให้ทำงานได้อย่างถูกต้อง สิ่งนี้สามารถทำได้โดยใช้วัตถุ XSSFSheet ซึ่งเพิ่มเข้าไปในสมุดงานดังแสดงในตัวอย่างรหัสต่อไปนี้
XSSFWorkbook wb1 = new XSSFWorkbook();
try
{
XSSFSheet sheet1 = wb1.createSheet("Ripon");
FileOutputStream fileOut = new FileOutputStream("workbook.xlsx");
wb1.write(fileOut);
fileOut.close();
}
catch(Exception ex)
{
System.out.println("XLSX Generated Error...");
}
กรอกข้อมูล xssfworkbook
ตอนนี้เราได้เห็นวิธีการสร้างสมุดงานและเพิ่มแผ่นลงใน Apache Poi API สำหรับ Java ลองดูว่าเราจะเพิ่มแถวและเซลล์ลงในแผ่นงานที่สร้างขึ้นได้อย่างไร คลาส XSSFSheet มีวิธีการ createrow ที่ให้คุณเพิ่มแถวลงในแผ่นงาน สิ่งนี้จะส่งคืนวัตถุของคลาสแถวที่แสดงถึงแถวในแผ่นงาน Excel ในการสร้างเซลล์ในแผ่นงานเราต้องใช้วิธี createCell ที่ส่งคืนวัตถุของคลาส XSSFCELL วิธี SetCellValue ของ XSSFCELL ใช้เพื่อตั้งค่าของเซลล์ ตัวอย่างที่สมบูรณ์ของการสร้างสมุดงานโดยใช้ XSSFWORKBOOK เพิ่มแผ่นงานโดยใช้ XSSFSheet และเพิ่ม XSSFROW ลงไปที่แสดงไว้ด้านล่าง
// Blank workbook
XSSFWorkbook workbook = new XSSFWorkbook();
// Creating a blank Excel sheet
XSSFSheet sheet = workbook.createSheet("student Details");
// Creating an empty TreeMap of string and Object][] type
Map<String, Object[]> data = new TreeMap<String, Object[]>();
// Writing data to Object[]
// using put() method
data.put("1", new Object[] { "ID", "CITY", "STATE" });
data.put("2", new Object[] { 1, "Clanton", "Alabama" });
data.put("3", new Object[] { 2, "Cordova", "Alaska" });
data.put("4", new Object[] { 3, "Clifton", "Arizona" });
data.put("5", new Object[] { 4, "Arcadia", "California" });
// Iterating over data and writing it to sheet
Set<String> keyset = data.keySet();
int rownum = 0;
for (String key : keyset) {
// Creating a new row in the sheet
XSSFRow row = sheet.createRow(rownum++);
Object[] objArr = data.get(key);
int cellnum = 0;
for (Object obj : objArr) {
// This line creates a cell in the next column of that row
XSSFCell cell = row.createCell(cellnum++);
if (obj instanceof String)
cell.setCellValue((String)obj);
else if (obj instanceof Integer)
cell.setCellValue((Integer)obj);
}
}
// Writing the workbook
FileOutputStream out = new FileOutputStream("gfgcontribute.xlsx");
workbook.write(out);
// Closing file output connections
out.close();
บทสรุป
ในบทความบล็อกนี้เราสาธิตวิธีการสร้างสมุดงาน Excel โดยใช้ Apache Poi API สำหรับ Java เราใช้ XSSFWORKBOOK เพื่อสร้างสมุดงาน XLSX เพิ่มแผ่นงานให้กับมันเพิ่มแถวในแผ่นงานและข้อมูลที่มีประชากรในเซลล์ในแผ่นงาน สำหรับตัวอย่างเพิ่มเติมของการทำงานกับสมุดงาน Excel โดยใช้ Apache Poi สำหรับ Java โปรดติดตามความคืบหน้า