说明

最近在做一个比较小型的网站,需要批量导入注册用户.用户的信息写在一张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 数字处理的更多相关文章

  1. 工作中最常用的Excel函数公式大全

    电脑那些事儿2016-05-18 22:23:02微软 公式 工作阅读(22574)评论(1) 声明:本文由入驻搜狐公众平台的作者撰写,除搜狐官方账号外,观点仅代表作者本人,不代表搜狐立场.举报 Wo ...

  2. jxl 处理 Excel 样式

    jxl 能够操作的 excel 样式: 1. Workbook的格式设置(代表一个excel文件) 2. Sheet的格式设置(代表一个表格) 3. Cell的格式设置(代表一个单元格) PS:此jx ...

  3. Excel的一些常用设置

    1. Freeze表头 (1) 下拉Worksheet的Pane,让该sheet有2个工作区,将该pane下拉到某一特定的行. (2)Window->Freeze Panes.此时会将pane智 ...

  4. Java怎样处理EXCEL的读取

    须要包:poi-3.5.jar.poi-ooxml-3.5.jar 实例: [java] view plaincopy public class ProcessExcel { private Work ...

  5. Excel常见操作,重复数据,去除数据关联

    Eecel对一个数据进行操作后按住右下角的十字架往下拉就可以对下面的操作进行相同 的操作,所以只需先对一个数据进行操作,再拉下来就可以了 通过公式处理的数据跟其它数据有关联 需要对这些数据进行去除它们 ...

  6. 【造轮子】打造一个简单的万能Excel读写工具

    大家工作或者平时是不是经常遇到要读写一些简单格式的Excel? shit!~很蛋疼,因为之前吹牛,就搞了个这东西,还算是挺实用,和大家分享下. 厌烦了每次搞简单类型的Excel读写?不怕~来,喜欢流式 ...

  7. excel 日期/数字格式不生效需要但双击才会生效的解决办法

    原因: Excel2007设置过单元格格式后,并不能立即生效必须挨个双击单元格,才能生效.数据行很多.效率太低. 原因:主要是一些从网上拷贝过来的日期或数字excel默认为文本格式或特殊-中文数字格式 ...

  8. C# Excel导入、导出【源码下载】

    本篇主要介绍C#的Excel导入.导出. 目录 1. 介绍:描述第三方类库NPOI以及Excel结构 2. Excel导入:介绍C#如何调用NPOI进行Excel导入,包含:流程图.NOPI以及C#代 ...

  9. Word/Excel 在线预览

    前言 近日项目中做到一个功能,需要上传附件后能够在线预览.之前也没做过这类似的,于是乎就查找了相关资料,.net实现Office文件预览大概有这几种方式: ① 使用Microsoft的Office组件 ...

随机推荐

  1. 《DSP using MATLAB》示例Example 8.18

    代码: %% ------------------------------------------------------------------------ %% Output Info about ...

  2. REST服务开发实战【转】

    原文:http://kb.cnblogs.com/page/91827/ REST介绍 如果要说什么是REST的话,那最好先从Web(万维网)说起. 什么是Web呢?读者可以查看维基百科的词条(htt ...

  3. LeetCode 360. Sort Transformed Array

    原题链接在这里:https://leetcode.com/problems/sort-transformed-array/description/ 题目: Given a sorted array o ...

  4. BZOJ3590 [Snoi2013]Quare

    题意 4.20四川芦山地震发生后,抗震救灾委员会接到一个紧急任务,四川省给该委员会发了一份地图,这份地图给出了该省一些城市的情况:任两个城市是用一条或多条公路连接起来的,也可以没有公路连接,但是每个城 ...

  5. pycharm中import动态链接库pyd有错误

    有红色波浪线提示unsolved reference云云 去setting里面设置interpreters,  在path里面添加对应的路径, 是包含对应头文件的路径, 不要忘记右边的小按钮去Relo ...

  6. js前台调用lodop打印

    lodop简单介绍 lodop的打印功能已经非常强大,也在带web端的图形界面,可以供用户使用.使用js在前台调用lodop打印,一般分为两种方法: 1:特殊的指令打印,这种打印方式,是采用的与js无 ...

  7. Linux GNU C

    Linux 系统上可用的C编译器是GNU C编译器,它建立在自由软件基金会的编程许可证的基础上,因此可以自由发布.GNU C对标准C 进行一系列扩展,以增强标准C的功能. 1.零长度数组GNU C 允 ...

  8. (转)将rdlc报表作为资源嵌套使用

    本文转载自:http://www.cnblogs.com/chenxizhang/archive/2009/05/16/1458469.html 如果我们准备在Windows Forms里面使用rdl ...

  9. Struts2.0 xml文件的配置(package,namespace,action)

    struts.xml配置 struts.xml文件是整个Struts2框架的核心. struts.xml文件内定义了Struts2的系列Action,定义Action时,指定该Action的实现类,并 ...

  10. [转]Jsp 页面中的错误

    1. Jsp 语法格式问题,导致其不能被翻译成 Servlet 源文件. 2. Jsp 翻译成 Servlet 源文件后出现的语法格式问题. 3. Jsp 翻译成 Servlet 后运行时发生异常.