Java PIO读取Excel文件

来源:互联网 发布:ubuntu下载镜像方法 编辑:程序博客网 时间:2024/04/25 07:14

Java读取Excel文件是通过apache 下的PIO来实现的,首先要加入PIO相关的jar包,可以到http://poi.apache.org/进行下载,这里使用的是3.17版本
然后在项目里添加以下的jar包

这里写图片描述

Excel文件有xls和xlsx两种,可以分别HSSFWorkbook和XSSFWorkbook对应实现读取;这里用Workbook,可以同时兼容两种文件的读取。

import java.io.File;import java.io.FileInputStream;import java.io.InputStream;import java.util.Iterator;import org.apache.poi.ss.usermodel.Cell;import org.apache.poi.ss.usermodel.CellType;import org.apache.poi.ss.usermodel.Row;import org.apache.poi.ss.usermodel.Sheet;import org.apache.poi.ss.usermodel.Workbook;import org.apache.poi.ss.usermodel.WorkbookFactory;/** * 读取Excel文件,xls和xlsx,兼容2003/2007/2010 */public class ReadExcelRealse {    public static void main(String[] args) {        readExcel();    }    public static void readExcel() {        try {            File excelFile = new File("F:\\退宿人员.xlsx");             //输入流            InputStream is = new FileInputStream(excelFile);            /*使用import org.apache.poi.ss.usermodel.*包,同                      时支持两种格式的读取*/             //使用Workbook可以读取2003/2007/2010的excel文件            Workbook workbook = WorkbookFactory.create(is);             Iterator<Sheet> sheets = workbook.sheetIterator();            //迭代遍历sheet            while (sheets.hasNext()) {                Sheet sheet = sheets.next();                Iterator<Row> rows = sheet.rowIterator();                //迭代遍历每行                while (rows.hasNext()) {                    Row row = rows.next();                    Iterator<Cell> cells = row.cellIterator();                    //迭代遍历每个单元格                    while (cells.hasNext()) {                        //用object接收每个单元格的值再打印出来                        Object cellValue = null;                        Cell cell = cells.next();                        //获取单元格内容的枚举类型,分别进行处理                        CellType cellType =    cell.getCellTypeEnum();                        switch (cellType) {                        case STRING:                            cellValue = cell.getStringCellValue();                            break;                        case NUMERIC:                            cellValue = cell.getNumericCellValue();                            break;                        case BLANK:                            cellValue = "空白单元格";                            break;                        case BOOLEAN:                            cellValue = cell.getBooleanCellValue();                            break;                        case ERROR:                            cellValue = "这是错误";                            break;                        case FORMULA:                            cellValue = "这是公式";                            break;                        default:                            cellValue = "未知错误";                            break;                        }                        System.out.print(cellValue + "\t");                    }                    System.out.println();                }            }            is.close();        } catch (Exception e) {            e.printStackTrace();        }    }}
原创粉丝点击