Java使用poi对Execl简单_读_操作
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简单_读_操作的更多相关文章
- Java使用poi对Execl简单_读和写_操作
1 /** 一.简单读取Execl的步骤: * 1.通过流来读取Execl并存放到内存中: * 2.通过WorkbookFactory工作簿工厂来读取内存中存放的execl文档流并创建出一个工作簿 * ...
- Java使用poi对Execl简单操作_总结
poi是Apache组织给开发者提供一套操作office(Execl,Word,PowerPoint)等Java API,开发者通过Poi API可以快速的操作office办公软件,以上3篇博文只是一 ...
- Java使用poi对Execl简单_写_操作
public class WriteExecl { @Test public void writeExeclTest() throws Exception{ OutputStream os = new ...
- java中poi进行execl导出
首先贴出最终导出的execl截图吧: 前台界面如下: 点击导出时,为其按钮的onclick事件添加exportDate()函数: function exportDate(){ var begin_Da ...
- ①java环境变量配置以及简单的dos框操作
DOS:英文全称Disk Operation System,即磁盘操作系统,是个人电脑上使用的一种操作系统,并曾是世界上最广泛使用的操作系统. JDK: 英文全称Java Development Ki ...
- java的poi技术读,写Excel[2003-2007,2010]
在上一篇blog:java的poi技术读取Excel[2003-2007,2010] 中介绍了关于java中的poi技术读取excel的相关操作 读取excel和MySQL相关: java的poi技术 ...
- JAVA使用POI读取EXCEL文件的简单model
一.JAVA使用POI读取EXCEL文件的简单model 1.所需要的jar commons-codec-1.10.jarcommons-logging-1.2.jarjunit-4.12.jarlo ...
- POI导出Execl文件,使JAVA虚拟机OOM
由于在项目中使用POI导出execl,导致JAVA虚拟机OOM,采用以下方式解决问题: 原先方式: g_wb = new XSSFWorkbook(sourceFile.getInputStream( ...
- java使用poi读取word(简单,简约,直观)
java使用poi读取word(简单,简约,直观) 说明 其实poi的官网上面都是有接口和样例的,只是都是英文 例如网址:http://poi.apache.org/spreadsheet/quick ...
随机推荐
- Android开源项目发现--- 效率开发工具篇(持续更新)
1.Json2Java 根据JSon数据自动生成对应的Java实体类,还支持Parcel.Gson Annotations对应代码自动生成.期待后续的提取父类以及多url构建整个工程的功能 项目地址: ...
- 一步一步自定义SpringMVC参数解析器
随心所欲,自定义参数解析器绑定数据. 题图:from Zoommy 干货 SpringMVC解析器用于解析request请求参数并绑定数据到Controller的入参上. 自定义一个参数解析器需要实现 ...
- group by 替代distinct
SQL> select distinct employee_id,first_name from test1; 107 rows selected. Execution Plan ------- ...
- nginx -- 安装配置Nginx
安装说明 系统环境:CentOS-6.3 软件:nginx-1.2.6.tar.gz 安装方式:源码编译安装 安装位置:/usr/local/nginx 下载地址:http://nginx.org ...
- Maven学习(2) - Maven构建多模块Java工程
概述 项目开发时,通常会将项目分为多个模块进行开发,本文讨论如何用Maven构建多模块的Java工程. 软件环境 Java:1.6.0_26 Maven:3.1.1 OS:WindowXP SP3 项 ...
- 定时器NSTimer的用法
//时间间隔 NSTimeInterval activeTimeInterval = NETWORK_SEND_ACTIVE_TIME; NSTimeInterval othe ...
- Bzoj 2186: [Sdoi2008]沙拉公主的困惑 乘法逆元,线性筛,欧拉函数,数论
2186: [Sdoi2008]沙拉公主的困惑 Time Limit: 10 Sec Memory Limit: 259 MBSubmit: 2560 Solved: 857[Submit][St ...
- linux0.12 编译过程
感谢这篇文章的作者: http://www.cnblogs.com/strugglesometimes/p/4231359.html 编译是个很蛋疼的事情,本想把linux0.12在bochs上 ...
- wiki 的捐款呼吁有感而发
今早在维基百科上查东西时,网页的最上角出现了一栏小广告,我一看居然是维基创始人发的捐款呼吁,点开后网页内容如下: “ 来自维基百科创办者Jimmy Wales的个人呼吁 ----------- ...
- 详解C#中System.IO.File类和System.IO.FileInfo类的用法
System.IO.File类和System.IO.FileInfo类主要提供有关文件的各种操作,在使用时需要引用System.IO命名空间.下面通过程序实例来介绍其主要属性和方法. (1) 文件打开 ...