zoukankan      html  css  js  c++  java
  • poi——读取excel数据

    单元格类型

    读取Excel数据

    package com.java.test.poi;
    
    import java.io.File;
    import java.io.FileInputStream;
    
    import org.apache.poi.ss.usermodel.Cell;
    import org.apache.poi.ss.usermodel.CellValue;
    import org.apache.poi.ss.usermodel.FormulaEvaluator;
    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;
    
    public class parseExcel {
        //  if(!wb.isSheetHidden(sheetnum)){}//判断工作表sheet是否被隐藏,隐藏返回true,未被隐藏返回false
        //  if(!row.getZeroHeight()){}//判断行是否隐藏,隐藏返回true
        public static void mainParseExcel() {
            //把所有文件种交易集合到一个list集合中
            String xlsxpath = "C:/Users/Desktop/1.xlsx";
            int startNum = 0;//从第几个sheet页开始解析
            /*解Excel*/
            Workbook wb = null;       //创建工作簿对象
            try{
                FileInputStream fi = new FileInputStream(new File(xlsxpath));
                wb = new XSSFWorkbook(fi);    //操作Excel2007的版本,扩展名是.xlsx//xlsm文件也可以兼容
                fi.close();//关闭输入流
            } catch (Exception e){
                System.out.println(e);
            }
            int num = wb.getNumberOfSheets();//得到sheet的个数
            for(int sheetnum=startNum; sheetnum<num; sheetnum++){//行,列和sheet索引都是从0开始            
                if(!wb.isSheetHidden(sheetnum)){//判断工作表是否被隐藏,隐藏返回true,未被隐藏返回false
                    /**解sheet页*/
                    Sheet sheet = wb.getSheetAt(sheetnum);    //获取给定索引处的Sheet对象。
                    FormulaEvaluator evaluator = wb.getCreationHelper().createFormulaEvaluator();    //先返回XSSF和HSSF对象,再创建一个用于计算公式单元格的对象
                    int rowNum = sheet.getLastRowNum() + 1;    //取最后一行的行号
                    /*双for循环遍历工作簿中单元格*/
                    for(int i=0; i<rowNum; i++){    //行循环                
                        Row row = sheet.getRow(i);    //行对象
                        int cellNum = row.getLastCellNum();     //取最后一列列号
    
                            for(int j=0; j<cellNum; j++){    //列循环
                                Cell cell = row.getCell(Short.parseShort(j + ""));    //指定单元格
                                CellValue c = evaluator.evaluate(cell);    //单元格值对象
                                if(c != null){    //判断单元格是否有值
                                    System.out.println(c.getCellType());
                                    System.out.println(c.getCellTypeEnum());
                                    switch(c.getCellType()) {
                                        case STRING:
                                            String value = c.getStringValue();    //得到单元格值
                                            System.out.println("String:" + value);
                                            break;
                                        case NUMERIC:
                                            double  dvalue = c.getNumberValue(); //得到单元格内数字
                                            System.out.println("Double:" + dvalue);
                                            break;
                                        default:
                                            System.out.println("---");
                                    }
                                }
                            }
                    }
                 
                }
            }
        }
        
        
        public static void main(String[] args) {
            
            mainParseExcel();
        }
    
    }
  • 相关阅读:
    前端方便面
    在页面未加载完之前显示loading动画
    块级格式化上下文(BFC)
    css预编译--sass进阶篇
    IPhoneX网页布局简介
    kotlin回调函数作为参数block: T.() -> Unit和block: () -> Unit的区别
    flutter显示参数提示的快捷键
    LinuxC线程pthread线程同步进程同步-互斥量、信号量、条件变量、读写锁、文件锁
    flutter实现页面跳转的两种路由
    android开发FontMetrics的理解
  • 原文地址:https://www.cnblogs.com/it-mh/p/10530105.html
Copyright © 2011-2022 走看看