java解析excel代码编写过程

前期对公司某个搜索产品进行用户体验性的效果评测,各项评测分数均记录在excel表格中,为了能将这些表格中的数据录入的数据以方便统计和分析,决定写一个解析excel并入库的小程序,还是用java,没办法,只懂java,python学习中,等差不多了用python试试看,看会不会比java更高效更轻量!

 
首先还是老办法,现在 谷歌上搜一把,看看别人都是怎么做的,找了很多大多数都提到了apache的PIO,看了看网上的示例后,自己写了一个,还是比较粗糙,没用校验功能,纯粹是针对我要解析的excel表格的格式去处理的,写了三个类,一个VO,一个解析excel的类ReadExcel,一个操作 数据库的类Insert,VO就不多说了,ReadExcel的实现逻辑是创建一个解析的方法,传入参数是一个字符串即文件路径,在方法中创建HSSFWorkbook,通过HSSFWorkbook循环读取sheet页,sheet页面循环读取每一行,每一行循环读取每一个单元格,再将每个单元的内容set到VO对象中,再将对象放入列表中,依次这个循环下去后,返回一个VO的列表,该列表包含了该excel文件的所有单元格内容,再在Insert类中将该列表中的各个对象迭代插入的数据库中,现在想想这样还是有很到缺陷,因为是一次性读取一个文件的所有内容后插入数据库,如果这个excel文件非常大时,会有内存溢出的可能!回头再优化优化!此过程描述起来非常简单,但真正代码调试通过并可正常使用的过程中还是碰到一些麻烦,首先是读取单元格内容,返回的要么是double型要么是String型,要想返回个float型还麻烦,一开始用Float的valueof方法,发现必须传入float或string型,于是决定先把内容弄成字符串再传入该方法进行转换用getStringCellValue()方法,结果报异常,因为单元格内容本身是数字型的,那就直接用toString方法,也不行,于是强制转换吧,管用!这还算小case了,可接下来调试的时候在set到VO时总报异常getUncaughtExceptionHandler().uncaughtException,这个异常平时还真没见到,网上也没找到这方面的太多信息,一开始以为是解析单元格的问题,后来把解析内容打印出来是好的,排除了,看了半天代码,发现可能是VO对象没有初始化的缘故,修改以后运行,OK了!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值