java 读取 excel 2003 或 excel 2007 -凯发k8网页登录
debug - 天道酬勤
::
凯发k8网页登录首页
::
新随笔
::
联系
::
聚合
::
管理
::
671 随笔 :: 6 文章 :: 256 评论 :: 0 trackbacks
2010年1月
日
一
二
三
四
五
六
27
28
29
30
31
1
2
3
4
6
8
9
10
11
12
13
14
15
16
17
18
19
21
22
23
24
25
26
27
29
30
31
1
2
3
4
5
6
公告
本博客中未注原创的文章均为转载,对转载内容可能做了些修改和增加图片注释,如果侵犯了您的凯发k8网页登录的版权,或没有注明原作者,请谅解
常用链接
我的随笔
我的评论
我的参与
最新评论
留言簿
(21)
给我留言
查看公开留言
查看私人留言
随笔分类
(644)
android(10)
(rss)
ant(4)
(rss)
c#(10)
(rss)
c/c (16)
(rss)
css(3)
(rss)
database(119)
(rss)
db-dailymmaintenance(16)
(rss)
design patterns(27)
(rss)
english
(rss)
exceptions(7)
(rss)
ext(39)
(rss)
flash(9)
(rss)
hardware(20)
(rss)
hibernate(13)
(rss)
html(23)
(rss)
java(143)
(rss)
java net(10)
(rss)
javascript(39)
(rss)
linux(26)
(rss)
php(5)
(rss)
regular exp(3)
(rss)
spring(17)
(rss)
struts(12)
(rss)
tool(43)
(rss)
vb/vba/vbs(5)
(rss)
webservice(9)
(rss)
xml(2)
(rss)
我的梦幻旅途(14)
(rss)
随笔档案
(669)
2017年9月 (4)
2016年10月 (1)
2015年6月 (1)
2015年4月 (2)
2015年1月 (1)
2014年8月 (2)
2014年7月 (9)
2014年6月 (1)
2014年5月 (2)
2014年4月 (3)
2014年3月 (3)
2013年10月 (4)
2013年9月 (8)
2013年8月 (4)
2013年6月 (3)
2013年5月 (4)
2013年4月 (7)
2013年3月 (1)
2013年1月 (3)
2012年12月 (4)
2012年11月 (1)
2012年10月 (1)
2012年9月 (4)
2012年8月 (1)
2012年7月 (2)
2012年6月 (1)
2012年5月 (4)
2012年4月 (2)
2012年3月 (1)
2012年2月 (4)
2012年1月 (6)
2011年12月 (10)
2011年11月 (7)
2011年10月 (6)
2011年9月 (37)
2011年8月 (34)
2011年7月 (44)
2011年6月 (10)
2011年5月 (5)
2011年4月 (3)
2011年3月 (1)
2011年2月 (1)
2011年1月 (18)
2010年12月 (9)
2010年11月 (13)
2010年10月 (17)
2010年9月 (2)
2010年8月 (10)
2010年7月 (10)
2010年6月 (5)
2010年5月 (8)
2010年4月 (9)
2010年3月 (11)
2010年2月 (3)
2010年1月 (8)
2009年12月 (6)
2009年11月 (10)
2009年10月 (5)
2009年9月 (1)
2009年8月 (18)
2009年7月 (6)
2009年6月 (2)
2009年5月 (1)
2009年4月 (4)
2009年3月 (6)
2009年2月 (5)
2009年1月 (3)
2008年12月 (13)
2008年11月 (13)
2008年10月 (30)
2008年9月 (9)
2008年8月 (24)
2008年7月 (17)
2008年6月 (15)
2008年5月 (16)
2008年4月 (15)
2008年3月 (19)
2008年2月 (3)
2008年1月 (20)
2007年12月 (24)
2007年11月 (9)
文章档案
(6)
2008年4月 (1)
2008年3月 (1)
2008年1月 (2)
2007年11月 (2)
最新随笔
1. pp代码生成器(四) 使用凯发天生赢家一触即发官网的解决方案生成代码
2. pp代码生成器(三) 设计freemarker模板, 创建凯发天生赢家一触即发官网的解决方案
3. pp代码生成器(二) 凯发天生赢家一触即发官网的解决方案, 生成任务, 辅助设计面板
4. pp代码生成器(一) 简介, 下载, 运行
5. pp持久层代码生成器
6. 比较好的博客
7. 系统集成项目管理工程师
8. 软件公司项目经理岗位职责
9. 联想笔记本 显示屏 键盘失灵 释放静电
10. eclipse maven
积分与排名
积分 - 937282
排名 - 37
最新评论
1. re: myeclipse 快捷键大全(绝对全)
crl 向右箭头(输入法有问题打不出来)移到下一个参数的位置,然后crl shift 向右箭头 选中该位置的参数即可
--红领巾
2. re: log4j基本使用方法
555
--555
3. re: myeclipse 快捷键大全(绝对全)[未登录]
很不错,谢谢
--银狐
4. re: flex 表单
是谁这么无聊~呜~~~
--huikk
5. re: spring afterreturning 异常
具体是什么意思啊
--dingli
阅读排行榜
1. exception in thread "main" java.lang.noclassdeffounderror: com/sun/mail/util/lineinputstream(69905)
2. log4j.properties 使用说明(41967)
3. myeclipse 快捷键大全(绝对全)(32632)
4. tnsnames.ora 配置(24162)
5. oracle 树状查询(21291)
评论排行榜
1. exception in thread "main" java.lang.noclassdeffounderror: com/sun/mail/util/lineinputstream(53)
2. jmail 异常: java.lang.noclassdeffounderror: javax/activation/datasource(21)
3. javax.mail.messagingexception: 530 5.7.0 must issue a starttls command first(14)
4. java 读取 excel 2003 或 excel 2007(14)
5. java.lang.unsupportedclassversionerror: bad version number in .class file(8)
java 读取 excel 2003 或 excel 2007
package
com.common.website.util;
import
java.io.file;
import
java.io.fileinputstream;
import
java.io.ioexception;
import
java.io.inputstream;
import
java.text.decimalformat;
import
java.util.arraylist;
import
java.util.list;
import
org.apache.poi.hssf.usermodel.hssfdateutil;
import
org.apache.poi.hssf.usermodel.hssfworkbook;
import
org.apache.poi.ss.usermodel.cell;
import
org.apache.poi.ss.usermodel.row;
import
org.apache.poi.ss.usermodel.sheet;
import
org.apache.poi.ss.usermodel.workbook;
import
org.apache.poi.xssf.usermodel.xssfworkbook;
/** */
/**
*
*
title:[poi基础上的excel数据读取工具]
*
description: [支持excell2003,excell2007,自动格式化数值型数据,自动格式化日期型数据]
*
凯发天生赢家一触即发官网 copyright 2009 roadway co., ltd.
*
all right reserved.
*
created by [惠万鹏] [jan 20, 2010]
*
midified by [modifier] [modified time]
*
*
所需jar包列表
*
poi-3.6-20091214.jar
*
poi-contrib-3.6-20091214.jar
*
poi-examples-3.6-20091214.jar
*
poi-ooxml-3.6-20091214.jar
*
poi-ooxml-schemas-3.6-20091214.jar
*
poi-scratchpad-3.6-20091214.jar
*
xmlbeans-2.3.0.jar
*
*
*
@version
1.0
*/
public
class
poiexcelutil
{
/** */
/**
总行数
*/
private
int
totalrows
=
0
;
/** */
/**
总列数
*/
private
int
totalcells
=
0
;
/** */
/**
构造方法
*/
public
poiexcelutil()
{}
/** */
/**
*
*
description:[根据文件名读取excel文件]
*
created by [huyvanpull] [jan 20, 2010]
*
midified by [modifier] [modified time]
*
*
*
@param
filename
*
@return
*
@throws
exception
*/
public
list
<
arraylist
<
string
>>
read(string filename)
{
list
<
arraylist
<
string
>>
datalst
=
new
arraylist
<
arraylist
<
string
>>
();
/** */
/**
检查文件名是否为空或者是否是excel格式的文件
*/
if
(filename
==
null
||
!
filename.matches(
"
^. \\.(?i)((xls)|(xlsx))$
"
))
{
return
datalst;
}
boolean
isexcel2003
=
true
;
/** */
/**
对文件的合法性进行验证
*/
if
(filename.matches(
"
^. \\.(?i)(xlsx)$
"
))
{
isexcel2003
=
false
;
}
/** */
/**
检查文件是否存在
*/
file file
=
new
file(filename);
if
(file
==
null
||
!
file.exists())
{
return
datalst;
}
try
{
/** */
/**
调用本类提供的根据流读取的方法
*/
datalst
=
read(
new
fileinputstream(file), isexcel2003);
}
catch
(exception ex)
{
ex.printstacktrace();
}
/** */
/**
返回最后读取的结果
*/
return
datalst;
}
/** */
/**
*
*
description:[根据流读取excel文件]
*
created by [huyvanpull] [jan 20, 2010]
*
midified by [modifier] [modified time]
*
*
*
@param
inputstream
*
@param
isexcel2003
*
@return
*/
public
list
<
arraylist
<
string
>>
read(inputstream inputstream,
boolean
isexcel2003)
{
list
<
arraylist
<
string
>>
datalst
=
null
;
try
{
/** */
/**
根据版本选择创建workbook的方式
*/
workbook wb
=
isexcel2003
?
new
hssfworkbook(inputstream)
:
new
xssfworkbook(inputstream);
datalst
=
read(wb);
}
catch
(ioexception e)
{
e.printstacktrace();
}
return
datalst;
}
/** */
/**
*
*
description:[得到总行数]
*
created by [huyvanpull] [jan 20, 2010]
*
midified by [modifier] [modified time]
*
*
*
@return
*/
public
int
gettotalrows()
{
return
totalrows;
}
/** */
/**
*
*
description:[得到总列数]
*
created by [huyvanpull] [jan 20, 2010]
*
midified by [modifier] [modified time]
*
*
*
@return
*/
public
int
gettotalcells()
{
return
totalcells;
}
/** */
/**
*
*
description:[读取数据]
*
created by [huyvanpull] [jan 20, 2010]
*
midified by [modifier] [modified time]
*
*
*
@param
wb
*
@return
*/
private
list
<
arraylist
<
string
>>
read(workbook wb)
{
list
<
arraylist
<
string
>>
datalst
=
new
arraylist
<
arraylist
<
string
>>
();
/** */
/**
得到第一个shell
*/
sheet sheet
=
wb.getsheetat(
0
);
this
.totalrows
=
sheet.getphysicalnumberofrows();
if
(
this
.totalrows
>=
1
&&
sheet.getrow(
0
)
!=
null
)
{
this
.totalcells
=
sheet.getrow(
0
).getphysicalnumberofcells();
}
/** */
/**
循环excel的行
*/
for
(
int
r
=
0
; r
<
this
.totalrows; r
)
{
row row
=
sheet.getrow(r);
if
(row
==
null
)
{
continue
;
}
arraylist
<
string
>
rowlst
=
new
arraylist
<
string
>
();
/** */
/**
循环excel的列
*/
for
(
short
c
=
0
; c
<
this
.gettotalcells(); c
)
{
cell cell
=
row.getcell(c);
string cellvalue
=
""
;
if
(cell
==
null
)
{
rowlst.add(cellvalue);
continue
;
}
/** */
/**
处理数字型的,自动去零
*/
if
(cell.cell_type_numeric
==
cell.getcelltype())
{
/** */
/**
在excel里,日期也是数字,在此要进行判断
*/
if
(hssfdateutil.iscelldateformatted(cell))
{
cellvalue
=
dateutil.get4ymdhms(cell.getdatecellvalue());
}
else
{
cellvalue
=
getrightstr(cell.getnumericcellvalue()
""
);
}
}
/** */
/**
处理字符串型
*/
else
if
(cell.cell_type_string
==
cell.getcelltype())
{
cellvalue
=
cell.getstringcellvalue();
}
/** */
/**
处理布尔型
*/
else
if
(cell.cell_type_boolean
==
cell.getcelltype())
{
cellvalue
=
cell.getbooleancellvalue()
""
;
}
/** */
/**
其它的,非以上几种数据类型
*/
else
{
cellvalue
=
cell.tostring()
""
;
}
rowlst.add(cellvalue);
}
datalst.add(rowlst);
}
return
datalst;
}
/** */
/**
*
*
description:[正确地处理整数后自动加零的情况]
*
created by [huyvanpull] [jan 20, 2010]
*
midified by [modifier] [modified time]
*
*
*
@param
snum
*
@return
*/
private
string getrightstr(string snum)
{
decimalformat decimalformat
=
new
decimalformat(
"
#.000000
"
);
string resultstr
=
decimalformat.format(
new
double(snum));
if
(resultstr.matches(
"
^[- ]?\\d \\.[0] $
"
))
{
resultstr
=
resultstr.substring(
0
, resultstr.indexof(
"
.
"
));
}
return
resultstr;
}
/** */
/**
*
*
description:[测试main方法]
*
created by [huyvanpull] [jan 20, 2010]
*
midified by [modifier] [modified time]
*
*
*
@param
args
*
@throws
exception
*/
public
static
void
main(string[] args)
throws
exception
{
list
<
arraylist
<
string
>>
datalst
=
new
poiexcelutil()
.read(
"
e:/book1_shao.xls
"
);
for
(arraylist
<
string
>
innerlst : datalst)
{
stringbuffer rowdata
=
new
stringbuffer();
for
(string datastr : innerlst)
{
rowdata.append(
"
,
"
).append(datastr);
}
if
(rowdata.length()
>
0
)
{
system.out.println(rowdata.deletecharat(
0
).tostring());
}
}
}
}
posted on 2010-01-20 18:25
huikk
阅读(9846)
评论(14)
所属分类:
tool
#
re: java 读取 excel 2003 或 excel 2007
2010-12-15 14:10
如果一次读取 300000条数据怎么办?
回复
#
re: java 读取 excel 2003 或 excel 2007
2010-12-31 11:41
把你的poi包给我发一份。谢谢
* poi-3.6-20091214.jar
* poi-contrib-3.6-20091214.jar
* poi-examples-3.6-20091214.jar
* poi-ooxml-schemas-3.6-20091214.jar
* poi-scratchpad-3.6-20091214.jar
* >xmlbeans-2.3.0.jar
回复
#
re: java 读取 excel 2003 或 excel 2007
2010-12-31 11:41
@张
我的邮箱123306454@qq.com
回复
#
re: java 读取 excel 2003 或 excel 2007
2012-05-28 17:42
什么啊,程序不对workbook wb = isexcel2003 ? new hssfworkbook(inputstream)
: new xssfworkbook(inputstream);
回复
#
re: java 读取 excel 2003 或 excel 2007
2012-10-15 18:33
dateutil.get4ymdhms这个方法报错啊 怎么回事儿啊 下载的是你的jar包 求解释
回复
#
re: java 读取 excel 2003 或 excel 2007
2012-10-15 22:44
惠万鹏
public class dateutil
{
/**
*
*
description:[得到当前的时间]
*
created by [huyvanpull] [oct 26, 2009]
*
midified by [modifier] [modified time]
*
*
* @return
*/
public static date getdate()
{
calendar canlendar = calendar.getinstance();
return canlendar.gettime();
}
/**
*
*
description:[提到指定的millis得到时间]
*
created by [huyvanpull] [oct 26, 2009]
*
midified by [modifier] [modified time]
*
*
* @param millis
* @return
*/
public static date getdate(long millis)
{
calendar canlendar = calendar.getinstance();
canlendar.clear();
canlendar.settimeinmillis(millis);
return canlendar.gettime();
}
public static long getmillis()
{
return calendar.getinstance().gettimeinmillis();
}
/**
*
*
description:[得到指定日期的字符串(yyyy-mm-dd hh:mm:ss.sss)]
*
created by [huyvanpull] [oct 26, 2009]
*
midified by [modifier] [modified time]
*
*
* @param date
* @param formate
* @return
*/
public static string getdateformate(date date, string formate)
{
try
{
simpledateformat simpledateformate = new simpledateformat(formate);
return simpledateformate.format(date);
}
catch (exception e)
{}
return "";
}
/**
*
*
description:[根据日期得到yyyy-mm-dd hh:mm:ss.sss格式字符串]
*
created by [huyvanpull] [oct 26, 2009]
*
midified by [modifier] [modified time]
*
*
* @param date
* @return
*/
public static string get4ymdhmss(date date)
{
return dateutil.getdateformate(date, "yyyy-mm-dd hh:mm:ss.sss");
}
/**
*
*
description:[根据日期得到yyyy-mm-dd hh:mm:ss格式字符串]
*
created by [huyvanpull] [oct 26, 2009]
*
midified by [modifier] [modified time]
*
*
* @param date
* @return
*/
public static string get4ymdhms(date date)
{
return dateutil.getdateformate(date, "yyyy-mm-dd hh:mm:ss");
}
/**
*
*
description:[根据日期得到yyyy-mm-dd hh:mm格式字符串]
*
created by [huyvanpull] [oct 26, 2009]
*
midified by [modifier] [modified time]
*
*
* @param date
* @return
*/
public static string get4ymdhm(date date)
{
return dateutil.getdateformate(date, "yyyy-mm-dd hh:mm");
}
/**
*
*
description:[根据日期得到yyyy-mm-dd格式字符串]
*
created by [huyvanpull] [oct 26, 2009]
*
midified by [modifier] [modified time]
*
*
* @param date
* @return
*/
public static string get4ymd(date date)
{
return dateutil.getdateformate(date, "yyyy-mm-dd");
}
/**
*
*
description:[把指定字符(yyyy-mm-dd hh:mm:ss.sss)串转成date]
*
created by [huyvanpull] [oct 26, 2009]
*
midified by [modifier] [modified time]
*
*
* @param sdate
* @return
*/
public static date parse4ymdhmss(string sdate)
{
return dateutil.parsedate(sdate, "yyyy-mm-dd hh:mm:ss.sss");
}
/**
*
*
description:[把指定字符(yyyy-mm-dd hh:mm:ss)串转成date]
*
created by [huyvanpull] [oct 26, 2009]
*
midified by [modifier] [modified time]
*
*
* @param sdate
* @return
*/
public static date parse4ymdhms(string sdate)
{
return dateutil.parsedate(sdate, "yyyy-mm-dd hh:mm:ss");
}
/**
*
*
description:[把指定字符(yyyy-mm-dd hh:mm)串转成date]
*
created by [huyvanpull] [oct 26, 2009]
*
midified by [modifier] [modified time]
*
*
* @param sdate
* @return
*/
public static date parse4ymdhm(string sdate)
{
return dateutil.parsedate(sdate, "yyyy-mm-dd hh:mm");
}
/**
*
*
description:[把指定字符(yyyy-mm-dd)串转成date]
*
created by [huyvanpull] [oct 26, 2009]
*
midified by [modifier] [modified time]
*
*
* @param sdate
* @return
*/
public static date parse4ymd(string sdate)
{
return dateutil.parsedate(sdate, "yyyy-mm-dd");
}
/**
*
*
description:[根据指定格式,把字符串转成日期]
*
created by [huyvanpull] [oct 26, 2009]
*
midified by [modifier] [modified time]
*
*
* @param sdate
* @param formate
* @return
*/
public static date parsedate(string sdate, string formate)
{
simpledateformat simpledateformate = new simpledateformat(formate);
try
{
return simpledateformate.parse(sdate);
}
catch (parseexception e)
{
return null;
}
}
/**
*
*
description:[两个长整型的时间相差(时间的毫秒数),可以得到指定的毫秒数,秒数,分钟数,天数]
*
created by [huyvanpull] [oct 26, 2009]
*
midified by [modifier] [modified time]
*
*
* @param minuendtime[被减去的时间]
* @param subtrahendtime[减去的时间]
* @param tdatestr[part可选值["d","h","m","s","ms"]
* @return[minuendtime-subtrahendtime]
* @return
*/
public static double getdiftwotime(date minuendtime, date subtrahendtime,
string tdatestr)
{
if (minuendtime == null || subtrahendtime != null)
{
return dateutil.getdiftwotime(minuendtime.gettime(), subtrahendtime
.gettime(), tdatestr);
}
return 0;
}
/**
*
*
description:[两个长整型的时间相差(时间的毫秒数),可以得到指定的毫秒数,秒数,分钟数,天数]
*
created by [huyvanpull] [oct 26, 2009]
*
midified by [modifier] [modified time]
*
*
* @param minuendtime[被减去的时间]
* @param subtrahendtime[减去的时间]
* @param tdatestr[part可选值["d","h","m","s","ms"]
* @return[minuendtime-subtrahendtime]
*/
public static double getdiftwotime(long minuendtime, long subtrahendtime,
string tdatestr)
{
if (tdatestr == null || tdatestr.equals(""))
{
tdatestr = "ms";
}
double temp = 1;
/** 毫秒数 */
if ("ms".equalsignorecase(tdatestr))
{
temp = 1;
}
/** 得到秒 */
if ("s".equalsignorecase(tdatestr))
{
temp = 1000;
}
/** 得到分 */
if ("m".equalsignorecase(tdatestr))
{
temp = 1000 * 60;
}
/** 得到小时 */
if ("h".equalsignorecase(tdatestr))
{
temp = 1000 * 60 * 60;
}
/** 得到天 */
if ("d".equalsignorecase(tdatestr))
{
temp = 1000 * 60 * 60 * 24;
}
return (minuendtime - subtrahendtime) / temp;
}
/**
*
*
description:[从日期中得到指定部分(yyyy/mm/dd/hh/ss/sss)数字]
*
created by [huyvanpull] [oct 26, 2009]
*
midified by [modifier] [modified time]
*
*
* @param date
* @param part[part可选值["y","m","d","h","m","s","ms"]
* @return
*/
public static int getpartoftime(date date, string part)
{
calendar canlendar = calendar.getinstance();
canlendar.clear();
canlendar.settime(date);
/** 得到年 */
if (part.equalsignorecase("y"))
{
return canlendar.get(calendar.year);
}
/** 得到月 */
if (part.equalsignorecase("m"))
{
return canlendar.get(calendar.month) 1;
}
/** 得到日 */
if (part.equalsignorecase("d"))
{
return canlendar.get(calendar.day_of_month);
}
/** 得到时 */
if (part.equalsignorecase("h"))
{
return canlendar.get(calendar.hour_of_day);
}
/** 得到分 */
if (part.equalsignorecase("m"))
{
return canlendar.get(calendar.minute);
}
/** 得到秒 */
if (part.equalsignorecase("s"))
{
return canlendar.get(calendar.second);
}
/** 得到毫秒 */
if (part.equalsignorecase("ms"))
{
return canlendar.get(calendar.millisecond);
}
return -1;
}
}
回复
#
re: java 读取 excel 2003 或 excel 2007
2012-12-21 12:41
能读2003xls文件,但是读不了xlsx文件
回复
#
re: java 读取 excel 2003 或 excel 2007
2012-12-21 13:58
不是程序不对,读取2003没问题,读取2007的话workbook wb = isexcel2003 ? new hssfworkbook(inputstream)
: new xssfworkbook(inputstream) 这一行就会有异常,我觉得不是程序的错误,可能是jar包出错了?? 我也不知道,希望楼主能出面解决一下
回复
#
re: java 读取 excel 2003 或 excel 2007
2012-12-21 14:00
惠万鹏
没问题的, 这个是经过测试, 现在项目也在使用.
你检查一下你的jar包是否有问题.
回复
#
re: java 读取 excel 2003 或 excel 2007
2012-12-21 14:01
惠万鹏
加我qq我给你一个文件.
回复
#
re: java 读取 excel 2003 或 excel 2007
2013-05-05 08:42
错误: 找不到或无法加载主类,怎么会这样,jar包倒入没问题阿!
回复
#
re: java 读取 excel 2003 或 excel 2007
2013-05-05 09:14
完全没问题,eclipse的问题
回复
#
re: java 读取 excel 2003 或 excel 2007[未登录]
2013-08-01 17:31
有类变量,并发会有问题吧?
回复
#
re: java 读取 excel 2003 或 excel 2007
2014-02-10 20:51
还需要dom4j这个jar包,楼主忘列了吧
回复
新用户注册
只有注册用户后才能发表评论。
网站导航:
相关文章:
powered by:
凯发k8网页登录-凯发天生赢家一触即发官网
凯发天生赢家一触即发官网 copyright © huikk
网站地图