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

2016-02-19 18:07 105 1 收藏

有一种朋友不在生活里,却在生命力;有一种陪伴不在身边,却在心间。图老师即在大家的生活中又在身边。这么贴心的服务你感受到了吗?话不多说下面就和大家分享jsp页面显示数据导出到excel表中吧。

【 tulaoshi.com - Web开发 】

  Excel报表的方法,一个过於简单,一个只能用於window平台(因为使用jdbc-odbc bridge),且无法使用到Excel内部的各种公式或是方法,因此,今天介绍一个apache出的元件叫POI,它可以在UNIX或window平台处理word或Excel档案,而不需要依靠window的com,并且可设定储存格格式、列印格式等等;今天我来介绍其中有关资料读取、新增、修改及删除的功能,若各位网友研究好其他的功能,麻烦Email给我(ljj@mlc.edu.tw),分享给大家!
  一、需要用的档案: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;yrow.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://www.tulaoshi.com/webkaifa/)

  http://blog.csdn.net/gqm1982/archive/2007/01/25/1493229.aspx

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)

来源:http://www.tulaoshi.com/n/20160219/1616837.html

延伸阅读
Oracle数据直接导出到文本文件的方法 利用Oracle中的Spool缓冲池技术可以实现Oracle数据导出到文本文件。 1)、在Oracle PL/SQL中输入缓冲开始命令,并指定输出的文件名: spool d:output.txt 2)、在命令行中随便输入你的SQL查询: select mobile from customer; select mobile from client; …… 3)、在命令行中输入缓冲结果命令: spool
从sql导出到mysql的方法很多,现介绍一种无需编程,直接利用sql和mysql里的图形界面进行导入导出的简单方法。 前提是已经安装了sqlserver客户端和mysql的图形界面管理工具phpmyadmin。 在控制台根目录下打开sqlserver企业管理器,新建sqlserver组,根据自己的情况进行选择;然后新建sqlserver 注册,进行对sqlserver的连接。准...
其实,利用ASP.NET输出指定内容的WORD、EXCEL、TXT、HTM等类型的文档很容易的。主要分为三步来完成。 一、定义文档类型、字符编码 Response.Clear(); Response.Buffer= true; Response.Charset="utf-8"; //下面这行很重要, attachment 参数表示作为附件下载,您可以改成 online在线打开 //filenam...
标签: Web开发
说明:dbf数据库结构要与sql表一致 % Dim conndbf_dbf,Driver_dbf,SourceType_dbf,DBPath_dbf dim Conn_sql ,StrCnn,i,str_dbf dim dbf_table_name,sql_table_name 'dbf数据库名称 dbf_table_name="20005070" 'sql表名称 sql_table_name="zjls" str_dbf="" ' 建立dbfConnection 对...
标签: 电脑入门
对Excel数据进行排序是数据分析不可缺少的组成部分。您可能需要执行以下操作:将名称列表按字母顺序排列;按从高到低的顺序编制产品存货水 平列表,按颜色或图标对行进行排序。对数据进行排序有助于快速直观地显示数据并更好地理解数据,有助于组织并查找所需数据,有助于最终做出更有效的决策。 注释 若要查找某个单元格区域或某个表中的上...

经验教程

64

收藏

33
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部