最新更新 sitemap 网站制作设计本站搜索
网页设计
国外网站 韩国网站 个人主页 手提袋设计 CSS 网页特效 平面设计 网站设计 Flash CMS技巧 服装网站 php教程 photoshop 画册 服务器选用 数据库 Office
虚拟主机 域名注册 云主机 网页设计 客服QQ:8208442
当前位置:首页 > 编程开发 > jsp教程

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

日期:11-02    来源:中国设计秀    作者:cnwebshow.com

excel报表的方法,一个过於简单,一个只能用於window平台(因为使用jdbc-odbc bridge),且无法使用到excel内部的各种公式或是方法,因此,今天介绍一个apache出的元件叫POI,它可以在UNIX或window平台处理wordexcel档案,而不需要依靠window的com,并且可设定储存格格式、列印格式等等;今天我来介绍其中有关资料读取、新增、修改及删除的功能,若各位网友研究好其他的功能,麻烦Email给我(ljj@mlc.edu.tw),分享给大家! 9Hi中国设计秀
一、需要用的档案:jakarta-poi-1.8.0-dev-20020917.jar 9Hi中国设计秀
 几乎每天都有1.8.0的最新版(但非正式版),正式的版本是1.5.0 9Hi中国设计秀
 http://jakarta.apache.org/builds/jakarta-poi/nightly/ 9Hi中国设计秀
 将档案复制到classpath所指到的地方 9Hi中国设计秀
二、有兴趣的朋友可以参考 9Hi中国设计秀
  http://jakarta.apache.org/poi/ 9Hi中国设计秀
三、先建立一个叫做book1.xls的excel档,内容如下 9Hi中国设计秀
---------------------------------- 9Hi中国设计秀
项目  单价  数量   合计 9Hi中国设计秀
CPU   7000  5    35000 9Hi中国设计秀
硬碟  2500  2    5000 9Hi中国设计秀
记忆体 1600  3    4800 9Hi中国设计秀
---------------------------------- 9Hi中国设计秀
其中合计的栏位是设定公式,单价*数量 9Hi中国设计秀
 9Hi中国设计秀
四、资料读取範例9Hi中国设计秀
<%@ page contentType="text/html;charset=MS950" import="java.util.*,java.io.*" %>9Hi中国设计秀
<%@ page import="org.apache.poi.poifs.filesystem.*,org.apache.poi.hssf.usermodel.*" %>9Hi中国设计秀
<html>9Hi中国设计秀
<head>9Hi中国设计秀
<meta http-equiv="Content-Type" content="text/html; charset=MS950">9Hi中国设计秀
<title>读取excel档案</title>9Hi中国设计秀
</head>9Hi中国设计秀
<body>9Hi中国设计秀
<table border="1" width="100%">9Hi中国设计秀
<%9Hi中国设计秀
  FileInputStream finput = new FileInputStream(application.getRealPath("/")+"book1.xls" );9Hi中国设计秀
  //设定FileINputStream读取excel9Hi中国设计秀
  POIFSFileSystem fs = new POIFSFileSystem( finput );9Hi中国设计秀
  HSSFWorkbook wb = new HSSFWorkbook(fs);9Hi中国设计秀
  HSSFSheet sheet = wb.getSheetAt(0);9Hi中国设计秀
  //读取第一个工作表,宣告其为sheet 9Hi中国设计秀
  finput.close();9Hi中国设计秀
  HSSFRow row=null;9Hi中国设计秀
  //宣告一列 9Hi中国设计秀
  HSSFCell cell=null;9Hi中国设计秀
  //宣告一个储存格 9Hi中国设计秀
  short i=0;9Hi中国设计秀
  short y=0;9Hi中国设计秀
  //以巢状迴圈读取所有储存格资料 9Hi中国设计秀
  for (i=0;i<=sheet.getLastRowNum();i++)9Hi中国设计秀
  {9Hi中国设计秀
    out.PRintln("<tr>");9Hi中国设计秀
    row=sheet.getRow(i);9Hi中国设计秀
    for (y=0;y<row.getLastCellNum();y++)9Hi中国设计秀
    {9Hi中国设计秀
       cell=row.getCell(y);9Hi中国设计秀
       out.print("<td>");9Hi中国设计秀
       9Hi中国设计秀
       //判断储存格的格式 9Hi中国设计秀
       switch ( cell.getCellType() )9Hi中国设计秀
       {9Hi中国设计秀
           case HSSFCell.CELL_TYPE_NUMERIC:9Hi中国设计秀
               out.print(cell.getNumericCellValue());9Hi中国设计秀
               //getNumericCellValue()会回传double值,若不希望出现小数点,请自行转型为int 9Hi中国设计秀
               break;9Hi中国设计秀
           case HSSFCell.CELL_TYPE_STRING:9Hi中国设计秀
               out.print( cell.getStringCellValue());9Hi中国设计秀
               break;9Hi中国设计秀
           case HSSFCell.CELL_TYPE_FORMULA:9Hi中国设计秀
               out.print(cell.getNumericCellValue());9Hi中国设计秀
               //读出公式储存格计算後的值9Hi中国设计秀
               //若要读出公式内容,可用cell.getCellFormula() 9Hi中国设计秀
               break;9Hi中国设计秀
           default:9Hi中国设计秀
               out.print( "不明的格式");9Hi中国设计秀
               break;9Hi中国设计秀
       }9Hi中国设计秀
       out.println("</td>");9Hi中国设计秀
    }9Hi中国设计秀
    out.println("</tr>");9Hi中国设计秀
  }9Hi中国设计秀
%>9Hi中国设计秀
</table>9Hi中国设计秀
</body>9Hi中国设计秀
</html>9Hi中国设计秀
 9Hi中国设计秀
五、资料新增範例9Hi中国设计秀
<%@ page contentType="text/html;charset=MS950" import="java.util.*,java.io.*" %>9Hi中国设计秀
<%@ page import="org.apache.poi.poifs.filesystem.*,org.apache.poi.hssf.usermodel.*" %>9Hi中国设计秀
<html>9Hi中国设计秀
<head>9Hi中国设计秀
<meta http-equiv="Content-Type" content="text/html; charset=MS950">9Hi中国设计秀
<title>插入资料至excel档案</title>9Hi中国设计秀
</head>9Hi中国设计秀
<body>9Hi中国设计秀
<%9Hi中国设计秀
  FileInputStream finput = new FileInputStream(application.getRealPath("/")+"book1.xls" );9Hi中国设计秀
  //设定FileINputStream读取excel9Hi中国设计秀
  POIFSFileSystem fs = new POIFSFileSystem( finput );9Hi中国设计秀
  HSSFWorkbook wb = new HSSFWorkbook(fs);9Hi中国设计秀
  HSSFSheet sheet = wb.getSheetAt(0);9Hi中国设计秀
  //读取第一个工作表,宣告其为sheet 9Hi中国设计秀
  finput.close();9Hi中国设计秀
  HSSFRow row=null;9Hi中国设计秀
  //宣告一列 9Hi中国设计秀
  HSSFCell cell=null;9Hi中国设计秀
  //宣告一个储存格9Hi中国设计秀
  short i=4;9Hi中国设计秀
  row=sheet.createRow(i);9Hi中国设计秀
  //建立一个新的列,注意是第五列(列及储存格都是从0起算)9Hi中国设计秀
  cell=row.createCell((short)0);9Hi中国设计秀
  cell.setEncoding(HSSFCell.ENCODING_UTF_16);9Hi中国设计秀
  //设定这个储存格的字串要储存双位元 9Hi中国设计秀
  cell.setCellValue("显示卡");9Hi中国设计秀
  cell=row.createCell((short)1);9Hi中国设计秀
  cell.setCellValue(1700);9Hi中国设计秀
  cell=row.createCell((short)2);9Hi中国设计秀
  cell.setCellValue(8);9Hi中国设计秀
  cell=row.createCell((short)3);9Hi中国设计秀
  //设定这个储存格为公式储存格,并输入公式 9Hi中国设计秀
  cell.setCellFormula("B"+(i+1)+"*C"+(i+1));9Hi中国设计秀
  try9Hi中国设计秀
  {9Hi中国设计秀
    FileOutputStream fout=new FileOutputStream(application.getRealPath("/")+"book1.xls");9Hi中国设计秀
    wb.write(fout);9Hi中国设计秀
    //储存 9Hi中国设计秀
    fout.close();9Hi中国设计秀
    out.println("储存成功<a href='book1.xls'>book1.xls</a>");9Hi中国设计秀
  }9Hi中国设计秀
  catch(IOException e)9Hi中国设计秀
  {9Hi中国设计秀
    out.println("产生错误,错误讯息:"+e.toString());9Hi中国设计秀
  }9Hi中国设计秀
%>9Hi中国设计秀
</body>9Hi中国设计秀
</html>9Hi中国设计秀
 9Hi中国设计秀
六、资料删除、修改範例9Hi中国设计秀
<%@ page contentType="text/html;charset=MS950" import="java.util.*,java.io.*" %>9Hi中国设计秀
<%@ page import="org.apache.poi.poifs.filesystem.*,org.apache.poi.hssf.usermodel.*" %>9Hi中国设计秀
<html>9Hi中国设计秀
<head>9Hi中国设计秀
<meta http-equiv="Content-Type" content="text/html; charset=MS950">9Hi中国设计秀
<title>删除、修改资料至excel档案</title>9Hi中国设计秀
</head>9Hi中国设计秀
<body>9Hi中国设计秀
<%9Hi中国设计秀
  FileInputStream finput = new FileInputStream(application.getRealPath("/")+"book1.xls" );9Hi中国设计秀
  //设定FileINputStream读取excel9Hi中国设计秀
  POIFSFileSystem fs = new POIFSFileSystem( finput );9Hi中国设计秀
  HSSFWorkbook wb = new HSSFWorkbook(fs);9Hi中国设计秀
  HSSFSheet sheet = wb.getSheetAt(0);9Hi中国设计秀
  //读取第一个工作表,宣告其为sheet 9Hi中国设计秀
  finput.close();9Hi中国设计秀
  HSSFRow row=null;9Hi中国设计秀
  //宣告一列 9Hi中国设计秀
  HSSFCell cell=null;9Hi中国设计秀
  //宣告一个储存格9Hi中国设计秀
  row=sheet.getRow((short)4);9Hi中国设计秀
  //取出第五列9Hi中国设计秀
  if (row!=null)9Hi中国设计秀
     sheet.removeRow(row);9Hi中国设计秀
  //先侦测第五列存不存在,若在的话将第五列删除9Hi中国设计秀
  row=sheet.getRow((short)3);9Hi中国设计秀
  //取出第四列9Hi中国设计秀
  cell=row.getCell((short)2);9Hi中国设计秀
  //取出第三个储存格 9Hi中国设计秀
  cell.setCellValue(7);9Hi中国设计秀
  //设定该储存格值为79Hi中国设计秀
  cell=row.getCell((short)3);9Hi中国设计秀
  cell.setCellFormula(cell.getCellFormula());9Hi中国设计秀
  //上两行为取出公式储存格,并重新计算(因为刚才更新过计算公式的值)9Hi中国设计秀
  //如果不做,公式计算後的值不会更新 9Hi中国设计秀
  try9Hi中国设计秀
  {9Hi中国设计秀
    FileOutputStream fout=new FileOutputStream(application.getRealPath("/")+"book1.xls");9Hi中国设计秀
    wb.write(fout);9Hi中国设计秀
    //储存 9Hi中国设计秀
    fout.close();9Hi中国设计秀
    out.println("储存成功<a href='book1.xls'>book1.xls</a>");9Hi中国设计秀
  }9Hi中国设计秀
  catch(IOException e)9Hi中国设计秀
  {9Hi中国设计秀
    out.println("产生错误,错误讯息:"+e.toString());9Hi中国设计秀
  }9Hi中国设计秀
%>9Hi中国设计秀
</body>9Hi中国设计秀
</html>9Hi中国设计秀

http://blog.csdn.net/gqm1982/archive/2007/01/25/1493229.aspx9Hi中国设计秀

本文引用地址:/bc/article_46674.html
网站地图 | 关于我们 | 联系我们 | 网站建设 | 广告服务 | 版权声明 | 免责声明