zoukankan      html  css  js  c++  java
  • Java使用poi对Execl简单_读_操作

     1 public class ReadExecl {
     2     
     3 //    private final String XLSX = ".xlsx"; // 2007以上版本
     4 //    private final String XLS = ".xls"; // 2003版本
     5     
     6     @Test
     7     public void readExeclTest() throws Exception{
     8         File file = new File("F:/execl/readTest2.xlsx"); 
     9         InputStream is = new FileInputStream(file); // 读取Execl
    10         
    11 //        String suffix = file.toString().substring(file.toString().lastIndexOf("."),file.toString().length()); // 截取文件的后缀
    12 //        Workbook wb = null; // 创建一个工作簿
    13 //        if(XLSX.equals(suffix)) // 判断下 Execl 的后缀是那个版本
    14 //             wb = new XSSFWorkbook(is);
    15 //        else if(XLS.equals(suffix))
    16 //             wb = new HSSFWorkbook(is);
    17 //        else
    18 //            throw new RuntimeException("貌似这不是Execl的后缀,请重新检查喔^_^");  // 如果不是Execl就上抛异常
    19         
    20         Workbook wb = WorkbookFactory.create(is); // 万能处理版本问题,如果不用 上面注释的准确度创建,就可以考虑这种方式(其实底层也是那样判定的)
    21         
    22         Sheet sheet = wb.getSheetAt(0); // 获取一个Execl里面的sheet默认从0开始,也可以通过name来获取wb.getSheet(String name);
    23         FormulaEvaluator evaluator = wb.getCreationHelper().createFormulaEvaluator(); // 创建公式计算器(用来判断获取Execl中的数据是什么类型)
    24         
    25         int firstRow = sheet.getFirstRowNum(); // 获取第一行
    26         int lastRow = sheet.getLastRowNum(); // 获取最后一行
    27         
    28         for (int i = firstRow; i <= lastRow; i++) {
    29             Row row = sheet.getRow(i); // 获取当前行
    30             int firstCell = row.getFirstCellNum(); // 获取第一个单元格
    31             int lastCell = row.getLastCellNum(); // 获取最后一个单元格
    32             for(int j = firstCell; j <= lastCell; j++){
    33                 Cell cell = row.getCell(j); // 获取单元格
    34                 CellValue cellValue = evaluator.evaluate(cell); // 计算当前的单元格是什么数据类型
    35                 if(cellValue == null) // 如果execl的单元格是空则继续下次循环
    36                     continue;
    37                 switch (cellValue.getCellType()) {
    38                 case Cell.CELL_TYPE_NUMERIC:
    39                     if (DateUtil.isCellDateFormatted(cell)) {  // 这里的日期类型会被转换为数字类型,需要判别后区分处理
    40                         try {
    41                             new SimpleDateFormat("yyyy年MM月dd日").format(new SimpleDateFormat ("EEE MMM dd HH:mm:ss Z yyyy", Locale.UK).parse(cell.getDateCellValue().toString()));
    42                             System.out.println("numeric转日期...");
    43                         } catch (ParseException e) {
    44                             e.printStackTrace();
    45                         }
    46                     } else {
    47                         System.out.println("numeric类型...");
    48                     }
    49                     break;
    50                 case Cell.CELL_TYPE_BOOLEAN:
    51                     System.out.println("boolean类型...");
    52                     break;
    53                 case Cell.CELL_TYPE_STRING:
    54                     System.out.println("string类型...");
    55                     break;
    56                 case Cell.CELL_TYPE_FORMULA:
    57                     System.out.println("formula类型...");
    58                     break;
    59                 case Cell.CELL_TYPE_BLANK:
    60                     System.out.println("blank类型...");
    61                     break;
    62                 case Cell.CELL_TYPE_ERROR:
    63                     System.out.println("error类型...");
    64                     break;
    65                 default:
    66                     break;
    67                 }
    68             }
    69         }
    70         
    71         is.close(); // 记得关闭流,释放资源
    72     }
    73 }
    没有最好,也没有最坏,一切习惯就好~_^! JAVA交流群^_^:487566461 Activiti5交流群~_^:470165731 JBPM6交流群^_^:470118196 你的加入是我的荣耀,来吧,朋友:让我们一起交流和探讨!
  • 相关阅读:
    js变量的作用域问题
    HTML网页公用头部与尾部的一些方法
    拖动对象ondrag
    子div设置float后导致父div无法自动撑开的问题
    js像素运算问题
    js自动轮播图片的两种循环方法(原创)
    display:none显示和隐藏
    Linux shell脚本基础学习详细介绍(完整版)一
    java技术思维导图(转载)
    VIM编辑命令的技巧
  • 原文地址:https://www.cnblogs.com/fengmenghuo/p/4774256.html
Copyright © 2011-2022 走看看