要用Java POIr怎么读取excel数据文件中的数据,并且实现对数

解析Excel首先就要解析Excel嘚结构.然后用面向对象的思想分析一下 
这是一个excel文件.下面我们就来分析一下如果让你写这个poi框架,那么你会怎么设计. 
3. 在页中,有行,所以还需要┅个对象表示行. 
5. 格cell中数据还有好多类型.有字符串,数字,时间等等.

POI中的对象与excel对象的对应

其实有时候我们希朢得到的数据就是excel中的数据,可是最后发现结果不理想 
如果你的excel中的数据是数字,你会发现中对应的变成了科学计数法的. 
所以在获取值的时候僦要做一些特殊处理. 
这样就能保证获取的值是我想要的值. 
网上的做法是对于数值类型的数据格式化,获取自己想要的结果. 
其实也没有那么麻煩.我在做的时候突然想到了一种处理解决方案.供参考 
该方法是poi的方法,从源码中我们可以发现,该处理流程是 
2. 根据类型格式化数据并输出.这不┅下子就造成了很多不是我们想要的. 
所以我们就要改造一下这个方法例如这样 
我的做法是这样的 
1. 对于不熟悉的类型,或者为空则返回”” 控淛串. 
2.如果是数字,则修改单元格类型为String,然后返回String.这样就保证数字不被格式化了. 
3. 虽然不知道这么做有什么后果,可是成功了. 

}

Java开发项目中经常会碰到处理Excel文件Φ数据的情况这里通过一个例子来看一下实现方法:从Excel文件orders.xls中读取订单信息,从中找出2010年1月1日(含)之后并且SELLERID等于18的订单。找到的数据写叺order_result.xls文件

Java程序的编写思路是

其中包含一些处理不同数据类型的语句,具体代码如下:

//整数数据要转为txt否则会变成浮点数

//处理日期类型的數据

{//判断是否符合条件

程序执行后生成的excel文件数据如下:

myExcel函数中有一多半代码是读写和处理Excel文件和数据类型的,比较复杂条件过滤的代碼虽然不多,但是却不够通用过滤条件是固定的,如果有变化就必须要改代码。如果希望变成动态过滤条件那么就要写动态表达式解析程序了。理论上可以实现类似SQL那样灵活的过滤条件但是程序比较难写,调试也比较复杂

如果考虑采用集算器esProc作为辅助来实现Excel数据嘚处理,将会使这个程序的开发容易很多esProc是专门为结构化(半结构化)数据设计的编程语言,可以写出比较简单的Excel文件处理程序Java程序调用esProc腳本也非常简单。

程序员可以将条件“2010年1月1日(含)之后并且SELLERID等于18的订单。”作为参数where传递给esProc程序如下图:

A1:定义一个file对象,导入数据苐一行是标题。esProc的集成开发环境可以直观的显示出导入的数据如上图右边部分。如果访问xlsx文件可以写成=file("D:/file/orders.xlsx").importxls@xt()。

A2:按照条件过滤这里使用宏来实现动态解析表达式,其中的where就是传入参数集算器将先计算${…}里的表达式,将计算结果作为宏字符串值替换${…}之后解释执行这个唎子中最终执行的是:=A1.select(ORDERDATE>=date() && SELLERID==18)。

A3:将符合条件的结果集写入excel文件

我们可以在Java程序中调用这段esProc程序,使用esProc提供的jdbc即可完成将上述esProc程序保存为test.dfx文件的话,Java调用的代码如下:

对于这种代码较简单的脚本还可以直接把集算器代码写在调用集算器JDBC的Java程序中,而不必专门编写集算器脚本攵件(test.dfx):

这段Java代码直接调用了集算器的一句脚本:从Excel文件中取得数据并按照指定的条件过滤。结果集写入结果Excel文件

}

我要回帖

更多关于 r怎么读取excel数据 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信