ในบทความก่อนหน้าของเราเราได้ผ่านรายละเอียดของ Apache Poi ซึ่งเป็น Java API โอเพ่นซอร์สสำหรับการทำงานกับรูปแบบไฟล์ Microsoft ในบทความนี้เราจะผ่านส่วนประกอบ Apache Poi สำหรับการทำงานกับสมุดงาน Excel นอกจากนี้เรายังจะแสดงวิธีการใช้ Apache Poi เพื่อสร้างไฟล์ Excel และเพิ่มแผ่นลงในนั้นโดยใช้ไลบรารี Java นี้

apache poi java apis สำหรับการเข้าถึงรูปแบบไฟล์ excel

Apache Poi Java API จัดเตรียมส่วนประกอบแยกต่างหากสำหรับการทำงานกับรูปแบบไฟล์ Excel สองรูปแบบที่แตกต่างกัน นี่คือ:

  1. HSSF (รูปแบบสเปรดชีตที่น่ากลัว)-สำหรับการทำงานกับรูปแบบไฟล์ Excel 97-2003
  2. 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 นั้นง่ายและง่ายและสามารถทำได้โดยใช้ขั้นตอนต่อไปนี้

  1. สร้างสมุดงานโดยใช้ xssfworkbook คลาส
  2. ปิดสตรีมเอาต์พุต รหัส 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 โปรดติดตามความคืบหน้า