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使用poi对Execl简单_读_操作的更多相关文章

  1. Java使用poi对Execl简单_读和写_操作

    1 /** 一.简单读取Execl的步骤: * 1.通过流来读取Execl并存放到内存中: * 2.通过WorkbookFactory工作簿工厂来读取内存中存放的execl文档流并创建出一个工作簿 * ...

  2. Java使用poi对Execl简单操作_总结

    poi是Apache组织给开发者提供一套操作office(Execl,Word,PowerPoint)等Java API,开发者通过Poi API可以快速的操作office办公软件,以上3篇博文只是一 ...

  3. Java使用poi对Execl简单_写_操作

    public class WriteExecl { @Test public void writeExeclTest() throws Exception{ OutputStream os = new ...

  4. java中poi进行execl导出

    首先贴出最终导出的execl截图吧: 前台界面如下: 点击导出时,为其按钮的onclick事件添加exportDate()函数: function exportDate(){ var begin_Da ...

  5. ①java环境变量配置以及简单的dos框操作

    DOS:英文全称Disk Operation System,即磁盘操作系统,是个人电脑上使用的一种操作系统,并曾是世界上最广泛使用的操作系统. JDK: 英文全称Java Development Ki ...

  6. java的poi技术读,写Excel[2003-2007,2010]

    在上一篇blog:java的poi技术读取Excel[2003-2007,2010] 中介绍了关于java中的poi技术读取excel的相关操作 读取excel和MySQL相关: java的poi技术 ...

  7. JAVA使用POI读取EXCEL文件的简单model

    一.JAVA使用POI读取EXCEL文件的简单model 1.所需要的jar commons-codec-1.10.jarcommons-logging-1.2.jarjunit-4.12.jarlo ...

  8. POI导出Execl文件,使JAVA虚拟机OOM

    由于在项目中使用POI导出execl,导致JAVA虚拟机OOM,采用以下方式解决问题: 原先方式: g_wb = new XSSFWorkbook(sourceFile.getInputStream( ...

  9. java使用poi读取word(简单,简约,直观)

    java使用poi读取word(简单,简约,直观) 说明 其实poi的官网上面都是有接口和样例的,只是都是英文 例如网址:http://poi.apache.org/spreadsheet/quick ...

随机推荐

  1. Book of Evil

    Codeforces Round #196 (Div. 2) D:http://codeforces.com/contest/337/status/D 题意:给你一个树,然后树中有一m个点,求到这m个 ...

  2. Hibernate 缓存 关于注解方式

    要引入 import org.hibernate.annotations.Cache; 在类前面添加: @Cache(usage= CacheConcurrencyStrategy.NONSTRICT ...

  3. Initializing Spring root WebApplicationContext

    最近 我部署ssh项目的时候经常出现这样的问题,我的解决办法是 log4j:WARN No appenders could be found for logger (org.springframewo ...

  4. 单片机Keil软件仿真与调试技巧

    一.引言 单片机软件开发过程中,软件调试遇到的各种问题常令初学者感到不知所措.实际上.各种仿真开发软件的程序调试基本方法和技巧大同小异,掌握正确的程序调试基本技巧.对于排查这些程序错误问题可以起到举一 ...

  5. eclipse下切换svn用户

    在eclipse中经常用到用svn进行代码版本控制,为了提交或更新代码的时候不反复地提示我们输入用户名和密码,于是我们就习惯把访问SVN的用户名密码自动保存起来.以便下次自动使用,不要再次手工输入,但 ...

  6. Android中moveTo、lineTo、quadTo、cubicTo、arcTo详解(实例)

    1.Why 最近在写android画图经常用到这几个什么什么To,一开始还真不知道cubicTo这个方法,更不用说能不能分清楚它们了,所以特此来做个小笔记,记录下moveTo.lineTo.quadT ...

  7. 命令行利器Tmux

    Tmux是一个优秀的终端复用软件,类似GNU Screen,但是对两个软件评价已经是一边倒了,大多数人认为tmux功能更加强大,使用更加方便. Tmux不仅可以提高终端工作效率,是服务器管理工作必不可 ...

  8. C#编程技术层次

    不谈具体领域(比如搜索,视频,网络等),单就编程语言这个垂直方向,大体上对它有一个如下的层次划分. 1. 基本运用C#语法,在各种工具和示例代码的支持下,完成一些基本程序任务 2. 熟练掌握面向对象与 ...

  9. android 自动化(1)

    学习android自动化测试要感谢一个朋友耐心的指导 环境搭建:(需要java JDK 以及android SDK) JDK:http://www.oracle.com/technetwork/jav ...

  10. unity3d 制造自己的水体water effect(一)

    first,I wish you a happy new year, and study in spring festival’s eve means you are hardworking,haha ...