城市猎人
在一网情深的日子里,谁能说得清是苦是甜,只知道确定了就义无反顾
posts - 1, comments - 7, trackbacks - 0, articles - 89
导航
BlogJava
首页
新随笔
联系
聚合
管理
<
2024年11月
>
日
一
二
三
四
五
六
27
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
6
7
常用链接
我的随笔
我的文章
我的评论
我的参与
最新评论
留言簿
(3)
给我留言
查看公开留言
查看私人留言
文章分类
(90)
AJAX-DWR/EXT/JQUERY(1)
EJB3(5)
Glassfish(2)
Hibernate(1)
ibatis(2)
java(12)
javascript(4)
linux(3)
mysql(1)
oracle(28)
others
PowerDesigner(1)
Solaris(2)
spring(5)
struts(2)
struts2(2)
weblogic(1)
分录(2)
心得体会(1)
模式(12)
网络笔试题集(1)
错误集(1)
锤炼(1)
文章档案
(90)
2012年8月 (1)
2011年12月 (1)
2011年11月 (1)
2011年8月 (2)
2011年3月 (1)
2010年6月 (1)
2009年9月 (1)
2009年8月 (4)
2009年7月 (2)
2009年6月 (1)
2009年4月 (5)
2009年3月 (3)
2009年1月 (2)
2008年12月 (8)
2008年11月 (5)
2008年10月 (7)
2008年9月 (3)
2008年8月 (6)
2008年7月 (33)
2008年5月 (3)
收藏夹
(12)
Ext
Hibernate
Ibatis(2)
J2EE(1)
J2SE(4)
Jquery
Mysql
Oracle(1)
Spring
strtus
Struts2(3)
Weblogic
下载地址(1)
设计模式
软件工程
搜索
最新评论
1. re: AOP之静态代理和动态代理
@AloneAli不好意思,弄错了。代理模式是种模式。。。不是装饰者模式。
--AloneAli
2. re: AOP之静态代理和动态代理
实质就是装饰者模式?
--AloneAli
3. re: struts与jquery整合[未登录]
学习下!
--力
4. re: struts与jquery整合
很好,很强大,谢谢了
--f
5. re: struts与jquery整合
thanks
--ami
利用OPI读取Excle文件
Posted on 2009-09-02 13:44
sailor
阅读(582)
评论(0)
编辑
收藏
所属分类:
java
1、读取文件
/** */
/**
* 导入方法
*
@param
request
*
@return
*
@throws
Exception
*/
public
Message importCubage(HttpServletRequest request)
throws
Exception
{
Message message
=
MessageFactory.getMessage();
ServletContext context
=
getServletContext();
UploadListener listener
=
new
UploadListener(request,
30
);
//
Create a factory for disk-based file items
FileItemFactory factory
=
new
MonitoredDiskFileItemFactory(listener);
//
Create a new file upload handler
ServletFileUpload upload
=
new
ServletFileUpload(factory);
try
{
List items
=
upload.parseRequest(request);
UserSession userSession
=
UserSession.getUserSession(request
.getSession());
for
(
int
i
=
0
; i
<
items.size(); i
++
)
{
FileItem fileItem
=
(FileItem) items.get(i);
if
(
!
fileItem.isFormField())
{
InputStream inputstream
=
fileItem.getInputStream();
//
读取excle文件
this
.getVolumeCorrenctionFactorService().saveExcleWorkBook(inputstream, userSession);
message.addMessage(MessageUtils.operateSuccess());
}
}
return
message;
}
catch
(FileUploadException e)
{
throw
new
FileUploadException(e.getMessage());
}
}
2、读取ExcleWorkBook
/** */
/**
* 读取Excle
*
@param
is
*/
public
void
saveExcleWorkBook(InputStream is, UserSession userSession)
{
Message message
=
MessageFactory.getMessage();
//
通过得到的文件输入流inputstream创建一个HSSFWordbook对象
try
{
HSSFWorkbook hssfworkbook
=
new
HSSFWorkbook(is);
HSSFSheet hssfsheet
=
null
;
for
(
int
i
=
0
; i
<
hssfworkbook.getNumberOfSheets(); i
++
)
{
hssfsheet
=
hssfworkbook.getSheetAt(i);
this
.readExcleSheet(hssfsheet, userSession);
}
}
catch
(IOException e)
{
e.printStackTrace();
message.addMessage(
"
读取Excle文件失败!
"
);
}
}
3、解析Excle
/** */
/**
* 读取Sheet数据
*
@param
hssfsheet
*/
private
void
readExcleSheet(HSSFSheet hssfsheet, UserSession userSession)
{
//
定义Sheet行
HSSFRow rows
=
null
;
//
定义列
HSSFCell cell
=
null
;
Double firstColumn;
Double firstRow;
List list
=
new
ArrayList();
VolumeCorrenctionFactorVO vo
=
null
;
//
遍历该行所有的行,i表示行数 getPhysicalNumberOfRows行的总数
for
(
int
i
=
1
; i
<
hssfsheet.getPhysicalNumberOfRows(); i
++
)
{
rows
=
hssfsheet.getRow(i);
//
获取第i行,第0列的值
if
(rows.getCell((
short
)
0
).getCellType()
==
HSSFCell.CELL_TYPE_NUMERIC)
{
firstColumn
=
rows.getCell((
short
)
0
).getNumericCellValue();
}
else
{
throw
new
BusinessException(
"
Excle第
"
+
(i
+
1
)
+
"
行,第
"
+
"
1列不是有效数字
"
);
}
//
获取第i行,第j列的值
for
(
short
j
=
1
; j
<
hssfsheet.getRow(
0
).getLastCellNum(); j
++
)
{
//
获取第0行,第j列的值
if
(hssfsheet.getRow(
0
).getCell(j).getCellType()
==
HSSFCell.CELL_TYPE_NUMERIC)
{
firstRow
=
hssfsheet.getRow(
0
).getCell(j).getNumericCellValue();
}
else
{
throw
new
BusinessException(
"
Excle第1行,第
"
+
(j
+
1
)
+
"
列不是有效数字
"
);
}
//
获取第i行,第j个单元格
cell
=
rows.getCell(j);
//
判断是否是数字
if
(
null
==
cell
||
cell.getCellType()
==
HSSFCell.CELL_TYPE_NUMERIC)
{
vo
=
new
VolumeCorrenctionFactorVO();
vo.setDensity(firstRow);
vo.setTemprature(firstColumn);
if
(
null
!=
cell)
{
Double cellContent
=
cell.getNumericCellValue();
vo.setVolumeFactor(cellContent);
}
list.add(vo);
}
else
{
throw
new
BusinessException(
"
Excle第
"
+
(i
+
1
)
+
"
行,第
"
+
(j
+
1
)
+
"
列不是有效数字
"
);
}
}
}
if
(list.size()
>
0
)
{
//
构建批量插入SQL
String sql
=
this
.buildSQL(list,userSession);
//
执行一次性插入多条SQL语句
this
.volumeCorrenctionFactorDAO.getSqlExecutor().exectue(sql,
null
);
}
}
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
知识库
C++博客
博问
管理
相关文章:
利用OPI读取Excle文件
DWR 的 Converter 实现原理简单分析及应用
参考资料
Servlet总结
BeanUtils日期转换
两种Date
Javarebel使用
java资源链接
cvs相关工具下载地址
正则表达式总结
Powered by:
BlogJava
Copyright © sailor