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. android 7.0 多渠道打包 - 美团开源工具Walle 命令行打包

    在Android 7.0(Nougat)推出了新的应用签名方案APK Signature Scheme v2后,之前快速生成渠道包的方式(美团Android自动化之旅-生成渠道包)已经行不通了,对此美 ...

  2. [Tyvj 1730] 二逼平衡树

    先来一发题面QwQ [TYVJ1730]二逼平衡树 Time Limit:2 s   Memory Limit:512 MB Description 您需要写一种数据结构(可参考题目标题),来维护一个 ...

  3. php的laravel框架使用心得

    最近在做一项目,是基于laravel的后台api,用于与手机交互的,数据采用json格式.下面说下怎样在两周内把一个新框架或者语言用的得心应手. 项目采用laravel5.4+dingoapi+jwt ...

  4. storm从入门到放弃(二),任务分配过程-核心机密

    背景:目前就职于国内最大的IT咨询公司,恰巧又是毕业季,所在部门招了100多个应届毕业生,本人要跟部门新人进行为期一个月的大数据入职培训,特此将整理的文档分享出来. 原文和作者一起讨论:http:// ...

  5. 消息队列中间件 RocketMQ 源码分析 —— Message 存储

  6. 暑假集训D9总结

    考试 几乎绝望的考试= =,感觉自己啥都打不出来= =,就一道DP打了个贪心,剩下两道骗分,然而竟然排到前一半= =,不可思议= = 真是令人窒息的操作啊= = T1  [bzoj1592] Maki ...

  7. 云计算——Google App Eng…

    云计算--Google App Engine(一) 编者:王尚 2014.04.12 20:20 介绍:Google App Engine提供一套开发组件让用户轻松的在本地构建和调试网络应用,之后能让 ...

  8. Docker跨主机网络——overlay

    前言 在Docker网络--单host网络一文中,我为大家总结了Docker的单机网络相关知识和操作,单机网络比较容易.本文我为大家总结Docker跨主机通信相关知识.同样本文大部分内容以CloudM ...

  9. Python优缺点

    优点 简单----Python是一种代表简单主义思想的语言.阅读一个良好的Python程序就感觉像是在读英语一样,尽管这个英语的要求非常严格!Python的这种伪代码本质是它最大的优点之一.它使你能够 ...

  10. javascript+HTMl5游戏下载,开发一个都能月薪上万!舅服你

    HTML5时代已经到来许久了,你是否已经掌握了那么一点呢?今天小编给大家讲讲h5的折叠多设备.跨平台特性, 即用HTML5制作游戏.相比flash,HTML5更加灵活方便,随着浏览器技术的不断升级,H ...