POI读取excel简单例子

maven需要的依赖:

<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>3.9</version>
</dependency>
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>3.9</version>
</dependency>
package com.da.test;

import java.io.FileInputStream;

import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
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.xssf.usermodel.XSSFWorkbook;

import com.da.util.PoiUtil;

public class ExcelPoi {
    public static void main(String[] args) {
        String fileToBeRead = "C:\\aaa.xlsx";
        Workbook workbook;
        try {
            if (fileToBeRead.indexOf(".xlsx") > -1) {
                workbook = new XSSFWorkbook(new FileInputStream(fileToBeRead));
            } else {
                workbook = new HSSFWorkbook(new FileInputStream(fileToBeRead));
            }
            // HSSFWorkbook workbook = new HSSFWorkbook(new
            // FileInputStream(fileToBeRead)); //2003 创建对Excel工作簿文件的引用
            // XSSFWorkbook workbook = new XSSFWorkbook(new
            // FileInputStream(fileToBeRead)); //2007,2010 创建对Excel工作簿文件的引用
            Sheet sheet = workbook.getSheet("Sheet1"); // 创建对工作表的引用
            int rows = sheet.getPhysicalNumberOfRows();// 获取表格的
            int columns = 0;
            for (int r = 0; r < rows; r++) { // 循环遍历表格的行
                if (r == 0) {
                    // 在第一行标题行计算出列宽度,因为数据行中可能会有空值
                    columns = sheet.getRow(r).getLastCellNum();
                    continue;
                }
                // String value = "";
                StringBuilder sb = new StringBuilder();
                Row row = sheet.getRow(r); // 获取单元格中指定的行对象
                if (row != null) {
                    // int cells = row.getPhysicalNumberOfCells();// 获取一行中的单元格数

                    // int cells = row.getLastCellNum();// 获取一行中最后单元格的编号(从1开始)
                    for (short c = 0; c < columns; c++) { // 循环遍历行中的单元格
                        Cell cell = row.getCell((short) c);
                        if (cell != null) {
                            // value += getCellValue(cell) + ",";
                            sb.append(PoiUtil.getCellValue(cell)).append(" ");
                        }
                    }
                }
                // String[] str = value.split(",");
                System.out.println(sb.toString());
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}

工具类:

package com.da.util;

import java.text.DecimalFormat;
import java.text.SimpleDateFormat;

import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.DateUtil;

public class PoiUtil {
    // 得到单元格的字符串内容
    public static String getCellValue(Cell cell) {
        DecimalFormat df = new DecimalFormat("#");
        if (cell == null)
            return "";
        switch (cell.getCellType()) {
        case Cell.CELL_TYPE_NUMERIC:
            if (DateUtil.isCellDateFormatted(cell)) {
                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
                return sdf.format(cell.getDateCellValue()).toString();
                // return
                // sdf.format(DateUtil.getJavaDate(cell.getNumericCellValue())).toString();
            }
            return df.format(cell.getNumericCellValue());
        case Cell.CELL_TYPE_STRING:
            // System.out.println(cell.getStringCellValue());
            return cell.getStringCellValue();
        case Cell.CELL_TYPE_FORMULA:
            return cell.getCellFormula();
        case Cell.CELL_TYPE_BLANK:
            return "";
        case Cell.CELL_TYPE_BOOLEAN:
            return cell.getBooleanCellValue() + "";
        case Cell.CELL_TYPE_ERROR:
            return cell.getErrorCellValue() + "";
        }
        return "";
    }
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值