Excel 数字处理
说明
最近在做一个比较小型的网站,需要批量导入注册用户.用户的信息写在一张excel表格里面.
所以就需要读取excel.所以就记录下遇到的问题,以及以后查看.
相关技术
使用的POI解析Excel需要使用的jar包
![]()
注(使用的maven.我就添加了右边的两个依赖就可以了)
分析
解析Excel首先就要解析Excel的结构.然后用面向对象的思想分析一下
![]()
这是一个excel文件.下面我们就来分析一下如果让你写这个poi框架,那么你会怎么设计.
1. 首先要有一个对象表示这整个Excel文件.
2. 可是这个excel文件中有好多页.Sheet1, Sheet2等等,所以我们还需要一个对象表示页.
3. 在页中,有行,所以还需要一个对象表示行.
4. 在行中,最后细分到格cell.
5. 格cell中数据还有好多类型.有字符串,数字,时间等等.
POI中的对象与excel对象的对应
excel文件就有多种类型了.后缀有 xls 与 xlsx
![]()
所以对于不同类型的文件,就需要使用不同的poi中的对象了.
1. 如果你要解析的是xls文件![]()
从代码不难发现,这里的处理逻辑是
1>. 先用inputstream获取excel文件的io流
2>. 然后创建一个内存中的excel文件HSSFWorkbook类型对象.这个对象表示了整个excel文件.
3>. 对这个excel文件的每页做循环处理
4>. 对每页中的每行做循环处理.
5>. 对每行中的每个单元格做做处理,获取这个单元格的值.
6>. 把这行的结果添加到一个List数组中.
7>. 把每行的结果添加到最后的总结果中.
8>. 解析完以后就获取了一个List< List < String > > 类型的对象了.
2. 如果你要处理xlsx类型的文件则![]()
和上面一样,我就不说了.
存在的问题
其实有时候我们希望得到的数据就是excel中的数据,可是最后发现结果不理想
如果你的excel中的数据是数字,你会发现Java中对应的变成了科学计数法的.
所以在获取值的时候就要做一些特殊处理.
这样就能保证获取的值是我想要的值.
网上的做法是对于数值类型的数据格式化,获取自己想要的结果.
其实也没有那么麻烦.我在做的时候突然想到了一种处理解决方案.供参考
我们看一下poi中对于的toString()方法![]()
该方法是poi的方法,从源码中我们可以发现,该处理流程是
1. 获取单元格的类型
2. 根据类型格式化数据并输出.这不一下子就造成了很多不是我们想要的.
所以我们就要改造一下这个方法例如这样![]()
我的做法是这样的
1. 对于不熟悉的类型,或者为空则返回”” 控制串.
2.如果是数字,则修改单元格类型为String,然后返回String.这样就保证数字不被格式化了.
3. 虽然不知道这么做有什么后果,可是成功了.
Excel 数字处理的更多相关文章
- 工作中最常用的Excel函数公式大全
电脑那些事儿2016-05-18 22:23:02微软 公式 工作阅读(22574)评论(1) 声明:本文由入驻搜狐公众平台的作者撰写,除搜狐官方账号外,观点仅代表作者本人,不代表搜狐立场.举报 Wo ...
- jxl 处理 Excel 样式
jxl 能够操作的 excel 样式: 1. Workbook的格式设置(代表一个excel文件) 2. Sheet的格式设置(代表一个表格) 3. Cell的格式设置(代表一个单元格) PS:此jx ...
- Excel的一些常用设置
1. Freeze表头 (1) 下拉Worksheet的Pane,让该sheet有2个工作区,将该pane下拉到某一特定的行. (2)Window->Freeze Panes.此时会将pane智 ...
- Java怎样处理EXCEL的读取
须要包:poi-3.5.jar.poi-ooxml-3.5.jar 实例: [java] view plaincopy public class ProcessExcel { private Work ...
- Excel常见操作,重复数据,去除数据关联
Eecel对一个数据进行操作后按住右下角的十字架往下拉就可以对下面的操作进行相同 的操作,所以只需先对一个数据进行操作,再拉下来就可以了 通过公式处理的数据跟其它数据有关联 需要对这些数据进行去除它们 ...
- 【造轮子】打造一个简单的万能Excel读写工具
大家工作或者平时是不是经常遇到要读写一些简单格式的Excel? shit!~很蛋疼,因为之前吹牛,就搞了个这东西,还算是挺实用,和大家分享下. 厌烦了每次搞简单类型的Excel读写?不怕~来,喜欢流式 ...
- excel 日期/数字格式不生效需要但双击才会生效的解决办法
原因: Excel2007设置过单元格格式后,并不能立即生效必须挨个双击单元格,才能生效.数据行很多.效率太低. 原因:主要是一些从网上拷贝过来的日期或数字excel默认为文本格式或特殊-中文数字格式 ...
- C# Excel导入、导出【源码下载】
本篇主要介绍C#的Excel导入.导出. 目录 1. 介绍:描述第三方类库NPOI以及Excel结构 2. Excel导入:介绍C#如何调用NPOI进行Excel导入,包含:流程图.NOPI以及C#代 ...
- Word/Excel 在线预览
前言 近日项目中做到一个功能,需要上传附件后能够在线预览.之前也没做过这类似的,于是乎就查找了相关资料,.net实现Office文件预览大概有这几种方式: ① 使用Microsoft的Office组件 ...
随机推荐
- .NET 使用 XPath 来读写 XML 文件
XPath 是 XML 路径语言(XML Path Language),用来确定XML文档中某部分位置的语言.无论是什么语言什么框架,几乎都可以使用 XPath 来高效查询 XML 文件. 本文将介绍 ...
- 《DSP using MATLAB》示例Example 8.4
代码: %% ------------------------------------------------------------------------ %% Output Info about ...
- 一步步用python制作游戏外挂【转】
转自:http://www.cnblogs.com/xsmhero/archive/2013/01/03/2842973.html 玩过电脑游戏的同学对于外挂肯定不陌生,但是你在用外挂的时候有没有想过 ...
- 关于altera fpga的io时序优化问题
chip planner中一个io的结构如下图所示 其中左边是输出部分右边是输入部分,但是会注意到两个结构:1,寄存器,2,delay模块 以下是我的推测:这两个结构是为了做时序优化时用的,在alte ...
- Java中文件的常用操作
一.文件的移动 File afile =new File("D:\\workspace\\Test\\test.avl"); if(afile.renameTo(new File ...
- Linux中源码安装编译Vim
Linux中源码安装编译Vim Linux下学习工作少不了编辑器,Vim能使你的工作效率成倍的提高.在Ubuntu上安装vim使用命令直接安装很简单.但有时还是需要自己手动编译安装.例如: vim中的 ...
- bzoj1503[NOI2004]郁闷的出纳员——Splay
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1503 好奇怪呀!为什么而TLE? 各种修改终于卡时过了.可是大家比我快多了呀?难道是因为自己 ...
- 解决openoffice进程异常退出的办法:
实现以守护进程,定时检测openoffice是否退出,如果进程不存在,通过脚本将openoffice起起来即可. 具体操作步骤: 第一步: 将openoffice.sh脚本放置在root目录下面, ...
- 通过Authentication Challenge来信任自签名Https证书
在开发阶段我们我们经常使用自签名的证书来部署我们的后台rest api.但是在iOS中调用的时候就会因为证书不被信任而调用api不成功.这时候我们就需要通过实现某些网络回调函数来自定义证书的验证逻辑. ...
- jeecg中service中注入jdbc的注解
@Resource private JdbcTemplate jdbcTemplate;