java处理excel,心得分享如下,如有不妥或者需要补充的地方,敬请指出,欢迎随时交流

1.加载excel,获得workbook对象

fileTemp = new File(pathOfMExcel);
ins = new FileInputStream(fileTemp);
wb = WorkbookFactory.create(ins);

ins.close();

 2.获得workbook对象后,既可以操作sheet和单元格了

获得sheet对象

Sheet sheet = wb.getSheetAt(k);//k=0表示第一个sheet

获得行对象(根据行对象就可以获得单元格对象了)

Row row = sheet.getRow(7);//第6行

Cell cell =row.getCell(2); //第1列

3.对于单元格的操作可以参照API即可。

4.强制刷新sheet公式,

  excel里面可能隐含公式,更新和excel公式相关的单元格的时候需要更新。

sheet_1.setForceFormulaRecalculation(true);//sheet_1为sheet对象
5.对于单元格的设置值,我是如此处理的:

先设置单元格全为String类型,然后根据需要,将某一列设置为数字,但是这列也有可能存在空和Sring类型,简单说,就是这列如果是数字需要设置为number类型,参与excel的公式计算,然后可以采用下面进行判断:

if (cell3.getCellType() == 3) {//空类型
continue;
}

if (cell3.getCellType() == 1 && cell3.getCellType() != 3) {//string类型
if (isNumberCheck(cell3.getStringCellValue())) {//判断是否为数字
 cell3.setCellValue(Double.parseDouble(cell3.getStringCellValue()));//如果为数字,设置为number
} else {
continue;
}

if (cell3.getCellType() == 0 && cell3.getCellType() != 3) {//数字类型
    if (isNumberCheck(cell3.getStringCellValue())) {//判断是否为数字(单元格格式为数字,值不一定)
           cell3.setCellValue(Double.parseDouble(cell3.getStringCellValue()));
} else {
continue;
}

6.对于单元格日期全变为数字的处理:

excel的日期起始业数字数字类型的一种,所以如下处理,免得最后都成为数字:

if (0 == cell.getCellType(){//数字类型

if (DateUtil.isCellDateFormatted(cell)) {
     // 用于转化为日期格式
      Date d = (Date) cell.getDateCellValue();
      DateFormat formater = new SimpleDateFormat("yyyy-MM-dd");
       return formater.format(d);
     }

}

7.对于百分号的处理,我就要显示为百分数的形式:

double d = Double.valueOf(pertage);
DecimalFormat df = new DecimalFormat("#%");
df.setRoundingMode(RoundingMode.DOWN);
return df.format(d);

8.将已存在的Excel修改,最后写入excel:

out = new FileOutputStream(fileTemp);//fileTemp第1点提到的
wb.write(out);
out.close();

很奇怪的是,如果fileTemp使用一开始加载excel就初始化的File流,那么执行wb.write(out);是很快的,如果再new一个File流,然后用再使用FileOutputStream加载,最后wb.write(out)的时候会极度慢,这也是暂时很疑惑的一点。

JavaPOI处理Excel的更多相关文章

  1. JAVA-POI实现EXCEL的读写

    想要完成JAVA读写EXCEL,首先需要JAVA-POI包的支持,百度搜索即可找到资源,不再赘述: POI-新增EXCEL并输入内容 package com.gsh.test.poi; import ...

  2. java--POI解析excel兼容性问题

    近日,使用POI解析excel,发现2003版本的excel解析与2007版本的excel解析存在问题.特此总结: 1.所需jar包 : 2.java类代码(读取excel文件): public vo ...

  3. Java-Poi 读取excel 数据

    一直想着使用java操作excel,但有时各种原因一直没有实现.由于工作无意间做了个其他demo,为了进一步发散就涉及到了使用excel,为此开始正式接触POI,虽然限制不是很了解POI,但是通过查阅 ...

  4. java-POI处理excel文件方法

    处理excel文件的开源库有很多,常见的POI.jxls..... 重点分析下POI处理excel的方法: 1.写文件 // 按照行优先进行数据表格的初始化 public static void cr ...

  5. java--poi读取excel图片和内容(支持03版本)

    有的时候需要将excel中所包含的图片在导入的时候取出来存到服务器中, 详细实现代码如下: package com.liuf.util; import java.io.BufferedInputStr ...

  6. SpringBoot入门教程(十四)导出Excel

    用JavaPOI导出Excel时,我们会考虑到Excel版本及数据量的问题.针对不同的Excel版本,要采用不同的工具类.HSSFWorkbook:是操作Excel2003以前(包括2003)的版本, ...

  7. Java HSSFworkbook,XSSFworkbook,SXSSFworkbook区别简述

    Java HSSFworkbook,XSSFworkbook,SXSSFworkbook区别简述 一.HSSFworkbook,XSSFworkbook,SXSSFworkbook区别简述 用Java ...

  8. POI导出大量数据的简单解决方案(附源码)-Java-POI导出大量数据,导出Excel文件,压缩ZIP(转载自iteye.com)

    说明:我的电脑 2.0CPU 2G内存 能够十秒钟导出 20W 条数据 ,12.8M的excel内容压缩后2.68M 我们知道在POI导出Excel时,数据量大了,很容易导致内存溢出.由于Excel ...

  9. java-poi 批量导入excel数据

    1,首先,前端发送MultipartFile类型文件,后端接收 2,分别创建多个ImportParams对象(easypoi),对应工作蒲 注意:pom中 要有相对应的配置 <!-- easyp ...

随机推荐

  1. Spring mybatis源码篇章-sql mapper配置文件绑定mapper class类

    前言:通过阅读源码对实现机制进行了解有利于陶冶情操,承接前文Spring mybatis源码篇章-MybatisDAO文件解析(二) 背景知识 MappedStatement是mybatis操作sql ...

  2. JavaScript系统学习小结——Object类型、Array类型

    今天学习JavaSript中引用变量中的Object类型和Array类型: 1. Js中大多数引用类型值都是Object类型的实例,Object类型在应用程序中存储和传输数据时,是非常理想的选择: 创 ...

  3. Fiddler基础使用一之捕获https请求

    fiddler抓包工具: http协议cookieFiddler是一个调试代理工具,它能够记录并检查所有你的电脑和互联网之间的http通讯,设置断点,查看所有的"进出"Fiddle ...

  4. HDU1113 Word Amalgamation

    Description In millions of newspapers across the United States there is a word game called Jumble. T ...

  5. 爬虫协议robots

    前面的话 Robots协议(也称为爬虫协议.机器人协议等)全称是“网络爬虫排除标准”(Robots Exclusion Protocol),网站通过Robots协议告诉搜索引擎哪些页面可以抓取,哪些页 ...

  6. unable to create …

    问题描述: 在新建Android Application时会出现unable to create the selected property page 解决方法: 将用户PATH路径中的jdk路径放到 ...

  7. 到底什么样的企业才适合实施SAP系统?

    SAP系统作为全宇宙第一的ERP,号称世界500强里面有80%的企业部署了SAP系统,总部位于德国沃尔多夫市,在全球拥有6万多名员工,遍布全球130个国家,并拥有覆盖全球11,500家企业的合作伙伴网 ...

  8. ajax执行顺序问题

    在一个函数里,执行顺序是先传所有的值到指定url,然后再返回所有的success 解决方法:将ajax改成异步 aysnc:false

  9. MySQL grant命令使用

    MySQL 赋予用户权限命令的简单格式可概括为: grant 权限 on 数据库对象 to 用户 一.grant 普通数据用户,查询.插入.更新.删除 数据库中所有表数据的权利. grant sele ...

  10. Oracle 外键约束

    本文讨论一下Oracle中的外键约束问题,以及和DB2中的小不同. 首先创建测试环境. -- 创建测试主表. ID 是主键. CREATE TABLE test_main ( id INT, valu ...