热烈祝贺台州朗动科技的站长论坛隆重上线!(2012-05-28)    热烈庆祝伟大的祖国60周年生日 点击进来我们一起为她祝福吧(2009-09-26)    站长论坛禁止发布广告,一经发现立即删除。谢谢各位合作!.(2009-08-08)    热烈祝贺台州网址导航全面升级,全新版本上线!希望各位一如既往地支持台州网址导航的发展.(2009-03-28)    台州站长论坛恭祝各位新年快乐,牛年行大运!(2009-01-24)    台州Link正式更名为台州网址导航,专业做以台州网址为主的网址导航!(2008-05-23)    热烈祝贺台州Link资讯改名为中国站长资讯!希望在以后日子里得到大家的大力支持和帮助!(2008-04-10)    热烈祝贺台州Link论坛改名为台州站长论坛!希望大家继续支持和鼓励!(2008-04-10)    台州站长论坛原[社会琐碎]版块更名为[生活百科]版块!(2007-09-05)    特此通知:新台州站长论坛的数据信息全部升级成功!">特此通知:新台州站长论坛的数据信息全部升级成功!(2007-09-01)    台州站长论坛对未通过验证的会员进行合理的清除,请您谅解(2007-08-30)    台州网址导航|上网导航诚邀世界各地的网站友情链接和友谊联盟,共同引领网站导航、前进!(2007-08-30)    禁止发广告之类的帖,已发现立即删除!(2007-08-30)    希望各位上传与下载有用资源和最新信息(2007-08-30)    热烈祝贺台州站长论坛全面升级成功,全新上线!(2007-08-30)    
便民网址导航,轻松网上冲浪。
台州维博网络专业开发网站门户平台系统
您当前的位置: 首页 » JAVA/JSP编程 » jsp页面显示数据导出到excel表中

jsp页面显示数据导出到excel表中

论坛链接
  • jsp页面显示数据导出到excel表中
  • 发布时间:2009-07-10 13:14:19    浏览数:8079    发布者:superadmin    设置字体【   
Excel报表的方法,一个过於简单,一个只能用於window平台(因为使用jdbc-odbc bridge),且无法使用到Excel内部的各种公式或是方法,因此,今天介绍一个apache出的元件叫POI,它可以在UNIX或window平台处理word或Excel档案,而不需要依靠window的com,并且可设定储存格格式、列印格式等等;今天我来介绍其中有关资料读取、新增、修改及删除的功能,若各位网友研究好其他的功能,麻烦Email给我([email]ljj@mlc.edu.tw[/email]),分享给大家!
一、需要用的档案:jakarta-poi-1.8.0-dev-20020917.jar
 几乎每天都有1.8.0的最新版(但非正式版),正式的版本是1.5.0
 http://jakarta.apache.org/builds/jakarta-poi/nightly/
 将档案复制到classpath所指到的地方
二、有兴趣的朋友可以参考
  http://jakarta.apache.org/poi/
三、先建立一个叫做book1.xls的Excel档,内容如下
----------------------------------
项目  单价  数量   合计
CPU   7000  5    35000
硬碟  2500  2    5000
记忆体 1600  3    4800
----------------------------------
其中合计的栏位是设定公式,单价*数量

四、资料读取範例
<%@ page contentType="text/html;charset=MS950" import="java.util.*,java.io.*" %>
<%@ page import="org.apache.poi.poifs.filesystem.*,org.apache.poi.hssf.usermodel.*" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=MS950">
<title>读取Excel档案</title>
</head>
<body>
<table border="1" width="100%">
<%
FileInputStream finput = new FileInputStream(application.getRealPath("/")+"book1.xls" );
//设定FileINputStream读取Excel档
POIFSFileSystem fs = new POIFSFileSystem( finput );
HSSFWorkbook wb = new HSSFWorkbook(fs);
HSSFSheet sheet = wb.getSheetAt(0);
//读取第一个工作表,宣告其为sheet
finput.close();
HSSFRow row=null;
//宣告一列
HSSFCell cell=null;
//宣告一个储存格
short i=0;
short y=0;
//以巢状迴圈读取所有储存格资料
for (i=0;i<=sheet.getLastRowNum();i++)
{
out.println("<tr>");
row=sheet.getRow(i);
for (y=0;y<row.getLastCellNum();y++)
{
cell=row.getCell(y);
out.print("<td>");

//判断储存格的格式
switch ( cell.getCellType() )
{
case HSSFCell.CELL_TYPE_NUMERIC:
out.print(cell.getNumericCellValue());
//getNumericCellValue()会回传double值,若不希望出现小数点,请自行转型为int
break;
case HSSFCell.CELL_TYPE_STRING:
out.print( cell.getStringCellValue());
break;
case HSSFCell.CELL_TYPE_FORMULA:
out.print(cell.getNumericCellValue());
//读出公式储存格计算後的值
//若要读出公式内容,可用cell.getCellFormula()
break;
default:
out.print( "不明的格式");
break;
}
out.println("</td>");
}
out.println("</tr>");
}
%>
</table>
</body>
</html>

五、资料新增範例
<%@ page contentType="text/html;charset=MS950" import="java.util.*,java.io.*" %>
<%@ page import="org.apache.poi.poifs.filesystem.*,org.apache.poi.hssf.usermodel.*" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=MS950">
<title>插入资料至Excel档案</title>
</head>
<body>
<%
FileInputStream finput = new FileInputStream(application.getRealPath("/")+"book1.xls" );
//设定FileINputStream读取Excel档
POIFSFileSystem fs = new POIFSFileSystem( finput );
HSSFWorkbook wb = new HSSFWorkbook(fs);
HSSFSheet sheet = wb.getSheetAt(0);
//读取第一个工作表,宣告其为sheet
finput.close();
HSSFRow row=null;
//宣告一列
HSSFCell cell=null;
//宣告一个储存格
short i=4;
row=sheet.createRow(i);
//建立一个新的列,注意是第五列(列及储存格都是从0起算)
cell=row.createCell((short)0);
cell.setEncoding(HSSFCell.ENCODING_UTF_16);
//设定这个储存格的字串要储存双位元
cell.setCellValue("显示卡");
cell=row.createCell((short)1);
cell.setCellValue(1700);
cell=row.createCell((short)2);
cell.setCellValue(8);
cell=row.createCell((short)3);
//设定这个储存格为公式储存格,并输入公式
cell.setCellFormula("B"+(i+1)+"*C"+(i+1));
try
{
FileOutputStream fout=new FileOutputStream(application.getRealPath("/")+"book1.xls");
wb.write(fout);
//储存
fout.close();
out.println("储存成功<a href='book1.xls'>book1.xls</a>");
}
catch(IOException e)
{
out.println("产生错误,错误讯息:"+e.toString());
}
%>
</body>
</html>

六、资料删除、修改範例
<%@ page contentType="text/html;charset=MS950" import="java.util.*,java.io.*" %>
<%@ page import="org.apache.poi.poifs.filesystem.*,org.apache.poi.hssf.usermodel.*" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=MS950">
<title>删除、修改资料至Excel档案</title>
</head>
<body>
<%
FileInputStream finput = new FileInputStream(application.getRealPath("/")+"book1.xls" );
//设定FileINputStream读取Excel档
POIFSFileSystem fs = new POIFSFileSystem( finput );
HSSFWorkbook wb = new HSSFWorkbook(fs);
HSSFSheet sheet = wb.getSheetAt(0);
//读取第一个工作表,宣告其为sheet
finput.close();
HSSFRow row=null;
//宣告一列
HSSFCell cell=null;
//宣告一个储存格
row=sheet.getRow((short)4);
//取出第五列
if (row!=null)
sheet.removeRow(row);
//先侦测第五列存不存在,若在的话将第五列删除
row=sheet.getRow((short)3);
//取出第四列
cell=row.getCell((short)2);
//取出第三个储存格
cell.setCellValue(7);
//设定该储存格值为7
cell=row.getCell((short)3);
cell.setCellFormula(cell.getCellFormula());
//上两行为取出公式储存格,并重新计算(因为刚才更新过计算公式的值)
//如果不做,公式计算後的值不会更新
try
{
FileOutputStream fout=new FileOutputStream(application.getRealPath("/")+"book1.xls");
wb.write(fout);
//储存
fout.close();
out.println("储存成功<a href='book1.xls'>book1.xls</a>");
}
catch(IOException e)
{
out.println("产生错误,错误讯息:"+e.toString());
}
%>
</body>
</html>
http://blog.csdn.net/gqm1982/archive/2007/01/25/1493229.aspx
娱乐休闲专区A 影视预告B 音乐咖啡C 英语阶梯D 生活百科
网页编程专区E AMPZF HTMLG CSSH JSI ASPJ PHPK JSPL MySQLM AJAX
Linux技术区 N 系统管理O 服务器架设P 网络/硬件Q 编程序开发R 内核/嵌入
管理中心专区S 发布网址T 版主议事U 事务处理