poi 导入 Excel

思想:
        Excel导入之后,将文件放入输入流(InputStream),然后放入XSSFWorkbook就可以对导入的Excel文件执行相应操作,使用XSSFSheet找到数据所在的工作表,然后使用XSSFRow遍历每一行数据,用XSSFCell指定到对应的单元格,这样就可以对应到每一个单元格数据(行和列均从0开始计算),取出数据之后就可以做相应的业务操作了。

 poi 依赖的 jar 包:
       poi-3.9-20121203.jar
       poi-ooxml-3.9-20121203.jar
       poi-ooxml-schemas-3.9-20121203.jar
       xmlbeans-2.3.0.jar

导入Excel后的解析过程(源码):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
public static void read(InputStream inputStream) throws IOException{
    //初始整个Excel
    XSSFWorkbook workbook = new XSSFWorkbook(inputStream);
    //获取第一个Sheet表
    XSSFSheet sheet = workbook.getSheetAt(0);//或者 HSSFSheet sheet = workbook.getSheet("Sheet1");
    for(int rowIndex = 1; rowIndex <= sheet.getLastRowNum(); rowIndex++){
        XSSFRow row = sheet.getRow(rowIndex);
        if(row == null){
            continue;
        }
        int end = 0;
        //循环该行的每一个单元格
        for(int cellnum = 0; cellnum < row.getLastCellNum(); cellnum++){
            XSSFCell cell = row.getCell(cellnum);
            if (cellnum == 0) {
                end = getCellValue(cell,rowlndex,0)
            }
            //打印出Excel中内容
            System.out.prinln(getCellValue(cell, rowIndex, cellnum));
        }
    }
    if ("end".qeuald(end)) {
        //end为在Excel中最后一行数据后面的结束标志,执行到结束标记可结束循环
        break;
    }
}
 
龙睿学长封装好的解析类型数据方法(源码):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
/**
 * 得到某个单元格的值
 * @param cell  需要传入的单元格
 * @param rowIndex  传入的单元格所在的行数,默认从0开始
 * @param cellnum   传入的单元格所在的列数,默认从0开始
 * @return  String类型的值,数字也将转换成字符串。
 */
public static String getCellValue(XSSFCell cell, int rowIndex, int cellnum) {
    String cellValue = "";
    if(cell == null){
        return " ";
    } else if (cell.getCellType() == XSSFCell.CELL_TYPE_BLANK) {
        cellValue = " ";
    } else if (cell.getCellType() == XSSFCell.CELL_TYPE_STRING) {
        cellValue = cell.getRichStringCellValue().getString().trim();
    } else if (cell.getCellType() == XSSFCell.CELL_TYPE_NUMERIC) {
        cellValue = Double.toString(cell.getNumericCellValue());
    } else if (cell.getCellType() == XSSFCell.CELL_TYPE_BOOLEAN) {
        cellValue = Boolean.toString(cell.getBooleanCellValue());
    } else if (cell.getCellType() == XSSFCell.CELL_TYPE_FORMULA) {
        cellValue = Double.toString(cell.getNumericCellValue());
    }
    return cellValue;
}
 
结束语:
            本以为解析Excel很难,迟迟不肯动手,事实上也不是很难,只要肯动手操作,遇到问题努力去解决,什么问题终将不是问题,所有问题的存在的同时答案亦存在,只要肯去寻找。这次解决解析Excel也使用了不到一天的时间,虽然遇到了许多问题,但是最终还是圆满的完成了任务,同时收获良多,下次继续努力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值