java的poi技术读取Excel[2003-2007,2010]详解编程语言

这篇blog主要是讲述java中poi读取excel,而excel的版本包括:2003-2007和2010两个版本, 即excel的后缀名为:xls和xlsx。

读取excel和MySQL相关: java的poi技术读取Excel数据到MySQL

你也可以在 : java的poi技术读取和导入Excel 了解到写入Excel的方法信息

使用JXL技术 : java的jxl技术导入Excel

下面是本文的项目结构:

java的poi技术读取Excel[2003-2007,2010]详解编程语言

项目中所需要的jar文件:

java的poi技术读取Excel[2003-2007,2010]详解编程语言

所用的Excel数据(2003-2007,2010都是一样的数据

java的poi技术读取Excel[2003-2007,2010]详解编程语言

运行效果:

java的poi技术读取Excel[2003-2007,2010]详解编程语言

=================================================

源码部分:

=================================================

/Excel2010/src/com/b510/common/Common.java

/** 
 *  
 */ 
package com.b510.common; 
 
/** 
 * @author Hongten 
 * @created 2014-5-21 
 */ 
public class Common { 
 
    public static final String OFFICE_EXCEL_2003_POSTFIX = "xls"; 
    public static final String OFFICE_EXCEL_2010_POSTFIX = "xlsx"; 
 
    public static final String EMPTY = ""; 
    public static final String POINT = "."; 
    public static final String LIB_PATH = "lib"; 
    public static final String STUDENT_INFO_XLS_PATH = LIB_PATH + "/student_info" + POINT + OFFICE_EXCEL_2003_POSTFIX; 
    public static final String STUDENT_INFO_XLSX_PATH = LIB_PATH + "/student_info" + POINT + OFFICE_EXCEL_2010_POSTFIX; 
    public static final String NOT_EXCEL_FILE = " : Not the Excel file!"; 
    public static final String PROCESSING = "Processing..."; 
 
}

/Excel2010/src/com/b510/excel/ReadExcel.java

/** 
 *  
 */ 
package com.b510.excel; 
 
import java.io.FileInputStream; 
import java.io.IOException; 
import java.io.InputStream; 
import java.util.ArrayList; 
import java.util.List; 
 
import org.apache.poi.hssf.usermodel.HSSFCell; 
import org.apache.poi.hssf.usermodel.HSSFRow; 
import org.apache.poi.hssf.usermodel.HSSFSheet; 
import org.apache.poi.hssf.usermodel.HSSFWorkbook; 
import org.apache.poi.xssf.usermodel.XSSFCell; 
import org.apache.poi.xssf.usermodel.XSSFRow; 
import org.apache.poi.xssf.usermodel.XSSFSheet; 
import org.apache.poi.xssf.usermodel.XSSFWorkbook; 
 
import com.b510.common.Common; 
import com.b510.excel.util.Util; 
import com.b510.excel.vo.Student; 
 
/** 
 * @author Hongten 
 * @created 2014-5-20 
 */ 
public class ReadExcel { 
     
    /** 
     * read the Excel file 
     * @param path the path of the Excel file 
     * @return 
     * @throws IOException 
     */ 
    public List<Student> readExcel(String path) throws IOException { 
        if (path == null || Common.EMPTY.equals(path)) { 
            return null; 
        } else { 
            String postfix = Util.getPostfix(path); 
            if (!Common.EMPTY.equals(postfix)) { 
                if (Common.OFFICE_EXCEL_2003_POSTFIX.equals(postfix)) { 
                    return readXls(path); 
                } else if (Common.OFFICE_EXCEL_2010_POSTFIX.equals(postfix)) { 
                    return readXlsx(path); 
                } 
            } else { 
                System.out.println(path + Common.NOT_EXCEL_FILE); 
            } 
        } 
        return null; 
    } 
 
    /** 
     * Read the Excel 2010 
     * @param path the path of the excel file 
     * @return 
     * @throws IOException 
     */ 
    public List<Student> readXlsx(String path) throws IOException { 
        System.out.println(Common.PROCESSING + path); 
        InputStream is = new FileInputStream(path); 
        XSSFWorkbook xssfWorkbook = new XSSFWorkbook(is); 
        Student student = null; 
        List<Student> list = new ArrayList<Student>(); 
        // Read the Sheet 
        for (int numSheet = 0; numSheet < xssfWorkbook.getNumberOfSheets(); numSheet++) { 
            XSSFSheet xssfSheet = xssfWorkbook.getSheetAt(numSheet); 
            if (xssfSheet == null) { 
                continue; 
            } 
            // Read the Row 
            for (int rowNum = 1; rowNum <= xssfSheet.getLastRowNum(); rowNum++) { 
                XSSFRow xssfRow = xssfSheet.getRow(rowNum); 
                if (xssfRow != null) { 
                    student = new Student(); 
                    XSSFCell no = xssfRow.getCell(0); 
                    XSSFCell name = xssfRow.getCell(1); 
                    XSSFCell age = xssfRow.getCell(2); 
                    XSSFCell score = xssfRow.getCell(3); 
                    student.setNo(getValue(no)); 
                    student.setName(getValue(name)); 
                    student.setAge(getValue(age)); 
                    student.setScore(Float.valueOf(getValue(score))); 
                    list.add(student); 
                } 
            } 
        } 
        return list; 
    } 
 
    /** 
     * Read the Excel 2003-2007 
     * @param path the path of the Excel 
     * @return 
     * @throws IOException 
     */ 
    public List<Student> readXls(String path) throws IOException { 
        System.out.println(Common.PROCESSING + path); 
        InputStream is = new FileInputStream(path); 
        HSSFWorkbook hssfWorkbook = new HSSFWorkbook(is); 
        Student student = null; 
        List<Student> list = new ArrayList<Student>(); 
        // Read the Sheet 
        for (int numSheet = 0; numSheet < hssfWorkbook.getNumberOfSheets(); numSheet++) { 
            HSSFSheet hssfSheet = hssfWorkbook.getSheetAt(numSheet); 
            if (hssfSheet == null) { 
                continue; 
            } 
            // Read the Row 
            for (int rowNum = 1; rowNum <= hssfSheet.getLastRowNum(); rowNum++) { 
                HSSFRow hssfRow = hssfSheet.getRow(rowNum); 
                if (hssfRow != null) { 
                    student = new Student(); 
                    HSSFCell no = hssfRow.getCell(0); 
                    HSSFCell name = hssfRow.getCell(1); 
                    HSSFCell age = hssfRow.getCell(2); 
                    HSSFCell score = hssfRow.getCell(3); 
                    student.setNo(getValue(no)); 
                    student.setName(getValue(name)); 
                    student.setAge(getValue(age)); 
                    student.setScore(Float.valueOf(getValue(score))); 
                    list.add(student); 
                } 
            } 
        } 
        return list; 
    } 
 
    @SuppressWarnings("static-access") 
    private String getValue(XSSFCell xssfRow) { 
        if (xssfRow.getCellType() == xssfRow.CELL_TYPE_BOOLEAN) { 
            return String.valueOf(xssfRow.getBooleanCellValue()); 
        } else if (xssfRow.getCellType() == xssfRow.CELL_TYPE_NUMERIC) { 
            return String.valueOf(xssfRow.getNumericCellValue()); 
        } else { 
            return String.valueOf(xssfRow.getStringCellValue()); 
        } 
    } 
 
    @SuppressWarnings("static-access") 
    private String getValue(HSSFCell hssfCell) { 
        if (hssfCell.getCellType() == hssfCell.CELL_TYPE_BOOLEAN) { 
            return String.valueOf(hssfCell.getBooleanCellValue()); 
        } else if (hssfCell.getCellType() == hssfCell.CELL_TYPE_NUMERIC) { 
            return String.valueOf(hssfCell.getNumericCellValue()); 
        } else { 
            return String.valueOf(hssfCell.getStringCellValue()); 
        } 
    } 
}

/Excel2010/src/com/b510/excel/client/Client.java

/** 
 *  
 */ 
package com.b510.excel.client; 
 
import java.io.IOException; 
import java.util.List; 
 
import com.b510.common.Common; 
import com.b510.excel.ReadExcel; 
import com.b510.excel.vo.Student; 
 
/** 
 * @author Hongten 
 * @created 2014-5-21 
 */ 
public class Client { 
 
    public static void main(String[] args) throws IOException { 
        String excel2003_2007 = Common.STUDENT_INFO_XLS_PATH; 
        String excel2010 = Common.STUDENT_INFO_XLSX_PATH; 
        // read the 2003-2007 excel 
        List<Student> list = new ReadExcel().readExcel(excel2003_2007); 
        if (list != null) { 
            for (Student student : list) { 
                System.out.println("No. : " + student.getNo() + ", name : " + student.getName() + ", age : " + student.getAge() + ", score : " + student.getScore()); 
            } 
        } 
        System.out.println("======================================"); 
        // read the 2010 excel 
        List<Student> list1 = new ReadExcel().readExcel(excel2010); 
        if (list1 != null) { 
            for (Student student : list1) { 
                System.out.println("No. : " + student.getNo() + ", name : " + student.getName() + ", age : " + student.getAge() + ", score : " + student.getScore()); 
            } 
        } 
    } 
}

/Excel2010/src/com/b510/excel/util/Util.java

/** 
 *  
 */ 
package com.b510.excel.util; 
 
import com.b510.common.Common; 
 
/** 
 * @author Hongten 
 * @created 2014-5-21 
 */ 
public class Util { 
 
    /** 
     * get postfix of the path 
     * @param path 
     * @return 
     */ 
    public static String getPostfix(String path) { 
        if (path == null || Common.EMPTY.equals(path.trim())) { 
            return Common.EMPTY; 
        } 
        if (path.contains(Common.POINT)) { 
            return path.substring(path.lastIndexOf(Common.POINT) + 1, path.length()); 
        } 
        return Common.EMPTY; 
    } 
}

/Excel2010/src/com/b510/excel/vo/Student.java

/** 
 *  
 */ 
package com.b510.excel.vo; 
 
/** 
 * Student 
 *  
 * @author Hongten 
 * @created 2014-5-18 
 */ 
public class Student { 
    /** 
     * id    
     */ 
    private Integer id; 
    /** 
     * 学号 
     */ 
    private String no; 
    /** 
     * 姓名 
     */ 
    private String name; 
    /** 
     * 学院 
     */ 
    private String age; 
    /** 
     * 成绩 
     */ 
    private float score; 
 
    public Integer getId() { 
        return id; 
    } 
 
    public void setId(Integer id) { 
        this.id = id; 
    } 
 
    public String getNo() { 
        return no; 
    } 
 
    public void setNo(String no) { 
        this.no = no; 
    } 
 
    public String getName() { 
        return name; 
    } 
 
    public void setName(String name) { 
        this.name = name; 
    } 
 
    public String getAge() { 
        return age; 
    } 
 
    public void setAge(String age) { 
        this.age = age; 
    } 
 
    public float getScore() { 
        return score; 
    } 
 
    public void setScore(float score) { 
        this.score = score; 
    } 
 
}

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/16062.html

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论