public class ReadExecl {

 //    private final String XLSX = ".xlsx"; // 2007以上版本
// private final String XLS = ".xls"; // 2003版本 @Test
public void readExeclTest() throws Exception{
File file = new File("F:/execl/readTest2.xlsx");
InputStream is = new FileInputStream(file); // 读取Execl // String suffix = file.toString().substring(file.toString().lastIndexOf("."),file.toString().length()); // 截取文件的后缀
// Workbook wb = null; // 创建一个工作簿
// if(XLSX.equals(suffix)) // 判断下 Execl 的后缀是那个版本
// wb = new XSSFWorkbook(is);
// else if(XLS.equals(suffix))
// wb = new HSSFWorkbook(is);
// else
// throw new RuntimeException("貌似这不是Execl的后缀,请重新检查喔^_^"); // 如果不是Execl就上抛异常 Workbook wb = WorkbookFactory.create(is); // 万能处理版本问题,如果不用 上面注释的准确度创建,就可以考虑这种方式(其实底层也是那样判定的) Sheet sheet = wb.getSheetAt(0); // 获取一个Execl里面的sheet默认从0开始,也可以通过name来获取wb.getSheet(String name);
FormulaEvaluator evaluator = wb.getCreationHelper().createFormulaEvaluator(); // 创建公式计算器(用来判断获取Execl中的数据是什么类型) int firstRow = sheet.getFirstRowNum(); // 获取第一行
int lastRow = sheet.getLastRowNum(); // 获取最后一行 for (int i = firstRow; i <= lastRow; i++) {
Row row = sheet.getRow(i); // 获取当前行
int firstCell = row.getFirstCellNum(); // 获取第一个单元格
int lastCell = row.getLastCellNum(); // 获取最后一个单元格
for(int j = firstCell; j <= lastCell; j++){
Cell cell = row.getCell(j); // 获取单元格
CellValue cellValue = evaluator.evaluate(cell); // 计算当前的单元格是什么数据类型
if(cellValue == null) // 如果execl的单元格是空则继续下次循环
continue;
switch (cellValue.getCellType()) {
case Cell.CELL_TYPE_NUMERIC:
if (DateUtil.isCellDateFormatted(cell)) { // 这里的日期类型会被转换为数字类型,需要判别后区分处理
try {
new SimpleDateFormat("yyyy年MM月dd日").format(new SimpleDateFormat ("EEE MMM dd HH:mm:ss Z yyyy", Locale.UK).parse(cell.getDateCellValue().toString()));
System.out.println("numeric转日期...");
} catch (ParseException e) {
e.printStackTrace();
}
} else {
System.out.println("numeric类型...");
}
break;
case Cell.CELL_TYPE_BOOLEAN:
System.out.println("boolean类型...");
break;
case Cell.CELL_TYPE_STRING:
System.out.println("string类型...");
break;
case Cell.CELL_TYPE_FORMULA:
System.out.println("formula类型...");
break;
case Cell.CELL_TYPE_BLANK:
System.out.println("blank类型...");
break;
case Cell.CELL_TYPE_ERROR:
System.out.println("error类型...");
break;
default:
break;
}
}
} is.close(); // 记得关闭流,释放资源
}
}

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. Octopress 之 Mac 版环境配置

    前提条件: 1.安装了 Git2.用 rbenv 或 RVM 安装了 Ruby 1.9.3 以上版本3.安装了 ExecJS 的一种支持 JavaScript 运行环境 一.安装 Octopress ...

  2. BZOJ 3676 回文串

    Description 考虑一个只包含小写拉丁字母的字符串\(s\).我们定义\(s\)的一个子串\(t\)的"出现值"为\(t\)在\(s\)中的出现次数乘以\(t\)的长度.请 ...

  3. 最牛「CSRF防护」,带你进入大虾们的圈子!

    简单理解 CSRF 什么是 CSRF? CSRF,通常称为跨站请求伪造,英文名 Cross-site request forgery 缩写 CSRF,是一种对网站的恶意攻击.一个跨站请求伪造攻击迫使登 ...

  4. March of the Penguins

    poj3498:http://poj.org/problem?id=3498 题意:某个冰块上有a只企鹅,总共可以跳出去b只,问是否可能所有的企鹅都跳到某一块冰块上,输出所有的可能的冰块的编号. 由于 ...

  5. rest开发

    http://www.mkyong.com/webservices/jax-rs/download-json-from-jax-rs-with-jaxb-resteasy/ http://blog.j ...

  6. 【POJ3294】 Life Forms (后缀数组+二分)

    Life Forms Description You may have wondered why most extraterrestrial life forms resemble humans, d ...

  7. 李洪强iOS开发之-环信02_iOS SDK 介绍及导入

    李洪强iOS开发之-环信02_iOS SDK 介绍及导入 iOS SDK 介绍及导入 iOS SDK 介绍 环信 SDK 为用户开发 IM 相关的应用提供的一套完善的开发框架.包括以下几个部分: SD ...

  8. pl/sql 关于变量定义的问题

    1. create or replace procedure  test_prc(p_data_dt in date) IS e_name emp.ename%type;      begin sel ...

  9. 查看SGA和PGA使用率

    select name,total,round(total-free,2) used, round(free,2) free,round((total-free)/total*100,2) pctus ...

  10. java 集合接口及类