Khởi động mùa xuân đọc tệp excel

Trong Java đọc file excel không giống đọc file word do các ô trong file excel. JDK không cung cấp API trực tiếp để đọc hoặc viết tài liệu Microsoft Excel hoặc Word. Chúng tôi phải dựa vào thư viện của bên thứ ba là Apache POI

Apache POI là gì?

Apache POI [Triển khai giải mã kém] là API Java để đọc và ghi Tài liệu Microsoft ở cả hai định dạng. xls và. xlsx. Nó chứa các lớp và giao diện. Thư viện Apache POI cung cấp hai triển khai để đọc tệp excel

  • Triển khai HSSF [Định dạng bảng tính khủng khiếp]. Nó biểu thị một API đang hoạt động với Excel 2003 hoặc các phiên bản cũ hơn
  • Triển khai XSSF [Định dạng bảng tính XML]. Nó biểu thị một API đang hoạt động với Excel 2007 hoặc các phiên bản mới hơn

Giao diện và lớp trong Apache POI

giao diện

  • Sách bài tập. Nó đại diện cho một Sổ làm việc Excel. Nó là một giao diện được triển khai bởi HSSFWorkbook và XSSFWorkbook
  • Tấm. Nó là một giao diện đại diện cho một bảng tính Excel. Trang tính là cấu trúc trung tâm của sổ làm việc, biểu thị một lưới các ô. Giao diện Sheet mở rộng java. lang thang. Có thể lặp lại
  • Hàng ngang. Nó cũng là một giao diện đại diện cho hàng của bảng tính. Giao diện Row mở rộng java. lang thang. Có thể lặp lại. Có hai lớp bê tông. HSSFrow và XSSFrow
  • Tế bào. Nó là một giao diện. Nó là một đại diện cấp cao của một ô trong một hàng của bảng tính. HSSFCell và XSSFCell triển khai giao diện Cell

Các lớp học

Lớp XLS

  • HSSFSách bài tập. Nó là một lớp đại diện cho tệp XLS
  • Bảng HSSF. Nó là một lớp đại diện cho trang tính trong tệp XLS
  • HSSFHàng. Nó là một lớp đại diện cho một hàng trong trang tính của tệp XLS
  • HSSF Tế bào. Nó là một lớp đại diện cho một ô trong một hàng của tệp XLS

Lớp XLSX

  • XSSFSách bài tập. Nó là một lớp đại diện cho tệp XLSX
  • Bảng XSSF. Nó là một lớp đại diện cho trang tính trong tệp XLSX
  • XSSFrow. Nó là một lớp đại diện cho một hàng trong trang tính của tệp XLSX
  • XSSFcell. Nó là một lớp đại diện cho một ô trong một hàng của tệp XLSX

Các bước đọc dữ liệu từ file XLS

Bước 1. Tạo một dự án Java đơn giản trong nhật thực

Bước 2. Bây giờ, tạo một thư mục lib trong dự án

Bước 3. Tải xuống và thêm các tệp jar sau vào thư mục lib

Bước 4. Đặt đường dẫn lớp

Nhấp chuột phải vào dự án -> Đường dẫn xây dựng -> Thêm JAR bên ngoài -> chọn tất cả các tệp jar ở trên -> Áp dụng và đóng

Bước 5. Bây giờ hãy tạo một tệp lớp có tên ReadExcelFileDemo và viết đoạn mã sau vào tệp

Bước 6. Tạo một file excel với tên "sinh viên. xls" và viết một số dữ liệu vào đó


Bước 7. Lưu và chạy chương trình

Ví dụ đọc file excel [. tệp xls]

đầu ra

Name        Age        Height		
Swarit      23.0        5"
Puneet      25.0        6'1"
Swastik     22.0        5'5"
Tejas       12.0        4'9"

Đọc tệp XLSX

Tất cả các bước sẽ giữ nguyên ngoại trừ định dạng tệp

Cái bàn. người lao động. xslx


Ví dụ đọc file excel [. xlsx]

Trong ví dụ này, chúng tôi sử dụng lớp XSSFWorkbook

đầu ra

Employee ID   Employee Name    Salary     Designation          Department	
1223.0         Harsh           20000.0    Marketing Manager    Marketing
3213.0         Vivek           15000.0    Financial Advisor    Finance	
6542.0         Krishna         21000.0    HR Manager           HR		
9213.0         Sarika          34000.0    Sales Manager       Sales 

Đọc một giá trị ô cụ thể từ tệp excel [. xlsx]

Cái bàn. Dữ liệu nhân viên. xlsx


Ví dụ

Trong ví dụ sau, chúng ta đọc giá trị của hàng thứ 2 và cột thứ 2. Việc đếm hàng và cột bắt đầu từ 0. Vì vậy, chương trình trả về "Kỹ sư phần mềm. "

Vui lòng để trống trường này

Địa chỉ email *

Bạn đã đăng ký thành công bản tin của chúng tôi

Học cách đọc excel, viết excel, đánh giá các ô công thức và áp dụng định dạng tùy chỉnh cho các tệp excel được tạo bằng thư viện Apache POI với các ví dụ

Nếu chúng tôi đang xây dựng phần mềm cho lĩnh vực Nhân sự hoặc Tài chính, thường có yêu cầu tạo báo cáo excel giữa các cấp quản lý. Ngoài các báo cáo, chúng tôi cũng có thể mong đợi một số dữ liệu đầu vào cho các ứng dụng ở dạng trang tính excel và ứng dụng được mong đợi sẽ hỗ trợ yêu cầu này

Apache POI là một thư viện đáng tin cậy trong số nhiều thư viện nguồn mở khác để xử lý các trường hợp sử dụng như vậy liên quan đến các tệp excel. Xin lưu ý rằng, ngoài ra, chúng tôi cũng có thể đọc và ghi các tệp MS Word và MS PowerPoint bằng thư viện Apache POI

Hướng dẫn Apache POI này sẽ thảo luận về một số thao tác excel hàng ngày trong các ứng dụng thực tế

Mục lục

1. Phụ thuộc Maven

Nếu chúng tôi đang làm việc trên một dự án maven, chúng tôi có thể bao gồm các phụ thuộc Apache POI trong tệp

package com.howtodoinjava.demo.poi;
//import statements
public class WriteExcelDemo 
{
    public static void main[String[] args] 
    {
        //Blank workbook
        XSSFWorkbook workbook = new XSSFWorkbook[]; 
         
        //Create a blank sheet
        XSSFSheet sheet = workbook.createSheet["Employee Data"];
          
        //This data needs to be written [Object[]]
        Map data = new TreeMap[];
        data.put["1", new Object[] {"ID", "NAME", "LASTNAME"}];
        data.put["2", new Object[] {1, "Amit", "Shukla"}];
        data.put["3", new Object[] {2, "Lokesh", "Gupta"}];
        data.put["4", new Object[] {3, "John", "Adwards"}];
        data.put["5", new Object[] {4, "Brian", "Schultz"}];
          
        //Iterate over data and write to sheet
        Set keyset = data.keySet[];
        int rownum = 0;
        for [String key : keyset]
        {
            Row row = sheet.createRow[rownum++];
            Object [] objArr = data.get[key];
            int cellnum = 0;
            for [Object obj : objArr]
            {
               Cell cell = row.createCell[cellnum++];
               if[obj instanceof String]
                    cell.setCellValue[[String]obj];
                else if[obj instanceof Integer]
                    cell.setCellValue[[Integer]obj];
            }
        }
        try
        {
            //Write the workbook in file system
            FileOutputStream out = new FileOutputStream[new File["howtodoinjava_demo.xlsx"]];
            workbook.write[out];
            out.close[];
            System.out.println["howtodoinjava_demo.xlsx written successfully on disk."];
        } 
        catch [Exception e] 
        {
            e.printStackTrace[];
        }
    }
}
1 bằng cách sử dụng tệp này


  org.apache.poi
  poi
  5.2.2



  org.apache.poi
  poi-ooxml
  5.2.2

2. Các lớp quan trọng trong Thư viện POI

  1. Các lớp HSSF, XSSF và XSSF

    Các lớp chính của Apache POI thường bắt đầu bằng HSSF, XSSF hoặc SXSSF

    • HSSF – là triển khai Java thuần túy của Dự án POI ở định dạng tệp Excel 97[-2007]. e. g. , HSSFWorkbook, HSSFSheet
    • XSSF – là triển khai Java thuần túy của Dự án POI cho Excel 2007 OOXML [. định dạng tệp xlsx]. e. g. , Sổ làm việc XSSF, Trang tính XSSF
    • SXSSF [từ 3. 8-beta3] – là tiện ích phát trực tuyến tương thích với API của XSSF được sử dụng khi phải tạo bảng tính lớn và dung lượng lưu trữ bị hạn chế. e. g. , SXSSFWorkbook, SXSSFSheet. SXSSF đạt được dung lượng bộ nhớ thấp bằng cách giới hạn quyền truy cập vào các hàng trong cửa sổ trượt, trong khi XSSF cấp quyền truy cập vào tất cả các hàng trong tài liệu
  2. Hàng và Ô

    Ngoài các lớp trên, Hàng và Ô tương tác với một hàng cụ thể và một ô cụ thể trong một bảng excel

  3. Các lớp liên quan đến tạo kiểu

    Một loạt các lớp như CellStyle, BuiltinFormats, So sánhOperator, ConditionalFormattingRule, FontFormatting, IndexedColors, PatternFormatting, SheetConditionalFormatting, v.v. được sử dụng khi bạn phải thêm định dạng vào trang tính, chủ yếu dựa trên một số quy tắc

  4. Trình đánh giá công thức

    Một lớp FormulaEvaluator hữu ích khác được sử dụng để đánh giá các ô công thức trong một trang tính excel

3. Viết một tệp Excel

Tôi đang lấy ví dụ này trước để chúng ta có thể sử dụng lại bảng excel được tạo bởi mã này trong các ví dụ tiếp theo

Viết excel bằng POI rất đơn giản và bao gồm các bước sau

  1. Tạo sổ làm việc
  2. Tạo trang tính trong sổ làm việc
  3. Tạo một hàng trong trang tính
  4. Thêm ô vào trang tính
  5. Lặp lại bước 3 và 4 để ghi thêm dữ liệu

Nó có vẻ rất đơn giản, phải không?

Chương trình Java viết file excel sử dụng thư viện Apache POI

package com.howtodoinjava.demo.poi;
//import statements
public class WriteExcelDemo 
{
    public static void main[String[] args] 
    {
        //Blank workbook
        XSSFWorkbook workbook = new XSSFWorkbook[]; 
         
        //Create a blank sheet
        XSSFSheet sheet = workbook.createSheet["Employee Data"];
          
        //This data needs to be written [Object[]]
        Map data = new TreeMap[];
        data.put["1", new Object[] {"ID", "NAME", "LASTNAME"}];
        data.put["2", new Object[] {1, "Amit", "Shukla"}];
        data.put["3", new Object[] {2, "Lokesh", "Gupta"}];
        data.put["4", new Object[] {3, "John", "Adwards"}];
        data.put["5", new Object[] {4, "Brian", "Schultz"}];
          
        //Iterate over data and write to sheet
        Set keyset = data.keySet[];
        int rownum = 0;
        for [String key : keyset]
        {
            Row row = sheet.createRow[rownum++];
            Object [] objArr = data.get[key];
            int cellnum = 0;
            for [Object obj : objArr]
            {
               Cell cell = row.createCell[cellnum++];
               if[obj instanceof String]
                    cell.setCellValue[[String]obj];
                else if[obj instanceof Integer]
                    cell.setCellValue[[Integer]obj];
            }
        }
        try
        {
            //Write the workbook in file system
            FileOutputStream out = new FileOutputStream[new File["howtodoinjava_demo.xlsx"]];
            workbook.write[out];
            out.close[];
            System.out.println["howtodoinjava_demo.xlsx written successfully on disk."];
        } 
        catch [Exception e] 
        {
            e.printStackTrace[];
        }
    }
}

Xem thêm. Nối các hàng vào Excel

4. Đọc một tệp Excel

Việc đọc một file excel bằng POI cũng rất đơn giản nếu chúng ta chia thành các bước

  1. Tạo phiên bản sổ làm việc từ một trang tính excel
  2. Đến trang tính mong muốn
  3. Tăng số hàng
  4. lặp lại trên tất cả các ô trong một hàng
  5. lặp lại bước 3 và 4 cho đến khi tất cả dữ liệu được đọc

Hãy xem tất cả các bước trên trong mã. Tôi đang viết mã để đọc tệp excel được tạo trong ví dụ trên. Nó sẽ đọc tất cả các tên cột và các giá trị trong đó – từng ô một

Chương trình Java để đọc tệp excel bằng thư viện Apache POI

package com.howtodoinjava.demo.poi;
//import statements
public class ReadExcelDemo 
{
    public static void main[String[] args] 
    {
        try
        {
            FileInputStream file = new FileInputStream[new File["howtodoinjava_demo.xlsx"]];
 
            //Create Workbook instance holding reference to .xlsx file
            XSSFWorkbook workbook = new XSSFWorkbook[file];
 
            //Get first/desired sheet from the workbook
            XSSFSheet sheet = workbook.getSheetAt[0];
 
            //Iterate through each rows one by one
            Iterator rowIterator = sheet.iterator[];
            while [rowIterator.hasNext[]] 
            {
                Row row = rowIterator.next[];
                //For each row, iterate through all the columns
                Iterator cellIterator = row.cellIterator[];
                 
                while [cellIterator.hasNext[]] 
                {
                    Cell cell = cellIterator.next[];
                    //Check the cell type and format accordingly
                    switch [cell.getCellType[]] 
                    {
                        case Cell.CELL_TYPE_NUMERIC:
                            System.out.print[cell.getNumericCellValue[] + "t"];
                            break;
                        case Cell.CELL_TYPE_STRING:
                            System.out.print[cell.getStringCellValue[] + "t"];
                            break;
                    }
                }
                System.out.println[""];
            }
            file.close[];
        } 
        catch [Exception e] 
        {
            e.printStackTrace[];
        }
    }
}

Đầu ra chương trình

ID      NAME        LASTNAME
1.0     Amit        Shukla  
2.0     Lokesh      Gupta   
3.0     John        Adwards 
4.0     Brian       Schultz 

Xem thêm. Apache POI – Đọc tệp Excel bằng Trình phân tích cú pháp SAX

5. Thêm và đánh giá các ô công thức

Khi làm việc trên các sheet excel phức tạp, chúng ta gặp nhiều ô có công thức để tính giá trị của chúng. Đây là những ô công thức. Apache POI cũng có hỗ trợ tuyệt vời để thêm các ô công thức và đánh giá các ô công thức đã có

Hãy xem một ví dụ về cách thêm các ô công thức trong excel?

Trang tính có bốn ô liên tiếp và ô thứ tư trong phép nhân của cả 3 hàng trước đó. Vậy công thức sẽ là. A2*B2*C2 [ở hàng thứ hai]

Chương trình Java để thêm công thức vào tệp excel bằng thư viện Apache POI

public static void main[String[] args] 
{
    XSSFWorkbook workbook = new XSSFWorkbook[];
    XSSFSheet sheet = workbook.createSheet["Calculate Simple Interest"];
  
    Row header = sheet.createRow[0];
    header.createCell[0].setCellValue["Pricipal"];
    header.createCell[1].setCellValue["RoI"];
    header.createCell[2].setCellValue["T"];
    header.createCell[3].setCellValue["Interest [P r t]"];
      
    Row dataRow = sheet.createRow[1];
    dataRow.createCell[0].setCellValue[14500d];
    dataRow.createCell[1].setCellValue[9.25];
    dataRow.createCell[2].setCellValue[3d];
    dataRow.createCell[3].setCellFormula["A2*B2*C2"];
      
    try {
        FileOutputStream out =  new FileOutputStream[new File["formulaDemo.xlsx"]];
        workbook.write[out];
        out.close[];
        System.out.println["Excel with foumula cells written successfully"];
          
    } catch [FileNotFoundException e] {
        e.printStackTrace[];
    } catch [IOException e] {
        e.printStackTrace[];
    }
}

Tương tự, chúng tôi muốn đọc một tệp có các ô công thức và sử dụng logic sau để đánh giá các ô công thức

Chương trình Java để đánh giá công thức trong tệp excel bằng thư viện Apache POI

________số 8

Đầu ra chương trình

Pricipal        RoI         T       Interest [P r t]        
14500.0         9.25        3.0     402375.0  

6. Định dạng ô

Cho đến nay chúng ta đã thấy các ví dụ về đọc/ghi và các tệp excel bằng cách sử dụng Apache POI. Tuy nhiên, khi tạo báo cáo trong tệp excel, điều cần thiết là thêm định dạng trên các ô phù hợp với bất kỳ tiêu chí được xác định trước nào

Định dạng này có thể có màu khác dựa trên phạm vi giá trị cụ thể, giới hạn ngày hết hạn, v.v.

Trong các ví dụ dưới đây, chúng tôi đang lấy một số ví dụ về định dạng ô như vậy cho các mục đích khác nhau

6. 1. Giá trị ô trong một phạm vi cụ thể

Mã này sẽ tô màu bất kỳ ô nào trong phạm vi có giá trị nằm giữa phạm vi đã định cấu hình. [e. g. , giữa 50 và 70]

Employee ID   Employee Name    Salary     Designation          Department	
1223.0         Harsh           20000.0    Marketing Manager    Marketing
3213.0         Vivek           15000.0    Financial Advisor    Finance	
6542.0         Krishna         21000.0    HR Manager           HR		
9213.0         Sarika          34000.0    Sales Manager       Sales 
0

6. 2. Làm nổi bật các giá trị trùng lặp

Đánh dấu tất cả các ô có giá trị trùng lặp trong các ô được quan sát

Employee ID   Employee Name    Salary     Designation          Department	
1223.0         Harsh           20000.0    Marketing Manager    Marketing
3213.0         Vivek           15000.0    Financial Advisor    Finance	
6542.0         Krishna         21000.0    HR Manager           HR		
9213.0         Sarika          34000.0    Sales Manager       Sales 
1

6. 3. Các hàng màu thay thế với các màu khác nhau

Một mã đơn giản để tô màu từng hàng thay thế bằng một màu khác

Employee ID   Employee Name    Salary     Designation          Department	
1223.0         Harsh           20000.0    Marketing Manager    Marketing
3213.0         Vivek           15000.0    Financial Advisor    Finance	
6542.0         Krishna         21000.0    HR Manager           HR		
9213.0         Sarika          34000.0    Sales Manager       Sales 
2

6. 4. Số lượng màu sắp hết hạn trong 30 ngày tới

Một mã tiện dụng cho các dự án tài chính theo dõi thời hạn

package com.howtodoinjava.demo.poi;
//import statements
public class WriteExcelDemo 
{
    public static void main[String[] args] 
    {
        //Blank workbook
        XSSFWorkbook workbook = new XSSFWorkbook[]; 
         
        //Create a blank sheet
        XSSFSheet sheet = workbook.createSheet["Employee Data"];
          
        //This data needs to be written [Object[]]
        Map data = new TreeMap[];
        data.put["1", new Object[] {"ID", "NAME", "LASTNAME"}];
        data.put["2", new Object[] {1, "Amit", "Shukla"}];
        data.put["3", new Object[] {2, "Lokesh", "Gupta"}];
        data.put["4", new Object[] {3, "John", "Adwards"}];
        data.put["5", new Object[] {4, "Brian", "Schultz"}];
          
        //Iterate over data and write to sheet
        Set keyset = data.keySet[];
        int rownum = 0;
        for [String key : keyset]
        {
            Row row = sheet.createRow[rownum++];
            Object [] objArr = data.get[key];
            int cellnum = 0;
            for [Object obj : objArr]
            {
               Cell cell = row.createCell[cellnum++];
               if[obj instanceof String]
                    cell.setCellValue[[String]obj];
                else if[obj instanceof Integer]
                    cell.setCellValue[[Integer]obj];
            }
        }
        try
        {
            //Write the workbook in file system
            FileOutputStream out = new FileOutputStream[new File["howtodoinjava_demo.xlsx"]];
            workbook.write[out];
            out.close[];
            System.out.println["howtodoinjava_demo.xlsx written successfully on disk."];
        } 
        catch [Exception e] 
        {
            e.printStackTrace[];
        }
    }
}
0

Tôi kết thúc hướng dẫn poi apache này tại đây để giữ cho bài đăng trong giới hạn

7. Phần kết luận

Trong hướng dẫn này, chúng ta đã học cách đọc excel, viết excel, đặt và đánh giá các ô công thức cũng như định dạng các ô bằng mã màu bằng thư viện Apache POI

Làm cách nào để đọc tệp Excel trong Spring Batch?

Nếu bạn muốn đọc dữ liệu đầu vào của công việc Spring Batch từ bảng tính Excel, bạn phải thêm các phụ thuộc Spring Batch Excel và Apache POI vào đường dẫn lớp. If you want to read the input data of your batch job by using Spring Batch Excel and Apache POI, you have to use the PoiItemReader class.

Làm cách nào để đọc tệp excel trong java còn lại api?

Đọc tệp XLSX .
nhập java. io. Tập tin;
nhập java. io. FileInputStream;
nhập java. sử dụng. Trình lặp;
tổ chức nhập khẩu. apache. poi. ss. mô hình người dùng. Tế bào;
tổ chức nhập khẩu. apache. poi. ss. mô hình người dùng. Hàng ngang;
tổ chức nhập khẩu. apache. poi. xssf. mô hình người dùng. Trang tính XSSF;
tổ chức nhập khẩu. apache. poi. xssf. mô hình người dùng. Sổ làm việc XSSF;
lớp công khai XLSXReaderVí dụ

Làm cách nào để đọc tệp Excel trong Spring MVC?

Để phân tích cú pháp tệp excel đã tải lên, chúng tôi sẽ sử dụng thư viện Apache POI, thư viện này có thể hoạt động với cả hai. xls và. tập tin xlsx. .
3. 1. Phân tích cú pháp một. tệp xls. .
3. 2. Phân tích cú pháp một. Tệp xlsx. .
3. 3. Xử lý hàng trống

Làm cách nào để đọc tệp Excel động trong Java?

Đọc tệp Excel bằng Java .
Nhận tham chiếu của trang tính trong một đối tượng Worksheet
Lấy số lượng hàng và cột dữ liệu trong trang tính
Bắt đầu một vòng lặp cho các hàng
Bắt đầu một vòng lặp lồng nhau cho các cột
Đọc dữ liệu từ mỗi ô bằng Worksheet. getCell[]. lấy [hàng Index, cột Index]. phương thức getValue[]

Chủ Đề