1.java导出excel报表:

package cn.jcenterhome.util;

import java.io.OutputStream;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletResponse;
import jxl.Workbook;
import jxl.format.Alignment;
import jxl.format.Border;
import jxl.format.BorderLineStyle;
import jxl.format.VerticalAlignment;
import jxl.write.Label;
import jxl.write.WritableCellFormat;
import jxl.write.WritableFont;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
public class ExportExcel {
 
  
  public  final static String exportExcel(List<String> header,
List<Map<String, Object>> list,String xlsName,String
type,HttpServletResponse response) {
          String result="系统提示:Excel文件导出成功!";
          // 以下开始输出到EXCEL
          try {   
           //定义输出流,以便打开保存对话框______________________begin
           response.reset();// 清空输出流    
  
        response.setHeader("Content-disposition", "attachment;
filename="+ new String(xlsName.getBytes("GB2312"),"ISO8859-1"));
          // 设定输出文件头     
           response.setContentType("application/octet-stream");// 定义输出类型  
           OutputStream os = response.getOutputStream();// 取得输出流          
           //定义输出流,以便打开保存对话框_______________________end  
           /** **********创建工作簿************ */
           WritableWorkbook workbook = Workbook.createWorkbook(os);
           /** ************设置单元格字体************** */
           WritableFont NormalFont = new WritableFont(WritableFont.ARIAL, 10);
           WritableFont BoldFont = new WritableFont(WritableFont.ARIAL, 10,WritableFont.BOLD);
           /** ************以下设置三种单元格样式,灵活备用************ */
           // 用于标题居中
           WritableCellFormat wcf_center = new WritableCellFormat(BoldFont);
           wcf_center.setBorder(Border.ALL, BorderLineStyle.THIN); // 线条
           wcf_center.setVerticalAlignment(VerticalAlignment.CENTRE); // 文字垂直对齐
           wcf_center.setAlignment(Alignment.CENTRE); // 文字水平对齐
           wcf_center.setWrap(false); // 文字是否换行
           // 用于正文居左
           WritableCellFormat wcf_left = new WritableCellFormat(NormalFont);
           wcf_left.setBorder(Border.NONE, BorderLineStyle.THIN); // 线条
           wcf_left.setVerticalAlignment(VerticalAlignment.CENTRE); // 文字垂直对齐
           wcf_left.setAlignment(Alignment.LEFT); // 文字水平对齐
           wcf_left.setWrap(false); // 文字是否换行  
           WritableSheet [] sheets =  null;
           if(list!=null&&list.size()>0){
               /** **********创建工作表************ */
               int scount = list.size()/65535 + ((list.size()%65535)>0?1:0);
               sheets = new WritableSheet[scount];
               for(int i=0;i<scount;i++){
                   WritableSheet sheet = workbook.createSheet("Sheet"+i+1, i);
                   /** **********设置纵横打印(默认为纵打)、打印纸***************** */
                   jxl.SheetSettings sheetset = sheet.getSettings();
                   sheetset.setProtected(false);
                   sheets[i]=sheet;
               }  
               /** ***************以下是EXCEL开头大标题,暂时省略********************* */
               //sheet.mergeCells(0, 0, colWidth, 0);
               //sheet.addCell(new Label(0, 0, "XX报表", wcf_center));
               /** ***************以下是EXCEL第一行列标题********************* */
               for(int j=0;j<scount;j++){
                   for(int i=0;i<header.size();i++){
                        sheets[j].addCell(new Label(i, 0,header.get(i),wcf_center));
                    }
               }
           }else{
               sheets = new WritableSheet[header.size()];
               WritableSheet sheet = workbook.createSheet("Sheet"+1, 0);
               /** **********设置纵横打印(默认为纵打)、打印纸***************** */
               jxl.SheetSettings sheetset = sheet.getSettings();
               sheetset.setProtected(false);
               sheets[0]=sheet;
               for(int i=0;i<header.size();i++){
                    sheets[0].addCell(new Label(i, 0,header.get(i),wcf_center));
                }
           }
           /** ***************以下是EXCEL正文数据********************* */
           if(list!=null){
               
                for (int i = 0; i < list.size(); i++)
                {
                    Map<String, Object> value=list.get(i);
                    int s = ((i+1)/65535)+(((i+1)%65535)>0?1:0)-1;
                    System.out.println("export i position is :"+i+";s value is :"+s);
                    int j = i%65535;
                    WritableSheet sheet = sheets[s];
                    
                   if(type.equals("exportAllOrder")){
  
                     sheet.addCell(new Label(0,
j+1,value.get("username")==null?"":value.get("username").toString(),wcf_left));
                        sheet.addCell(new Label(1, j+1,value.get("orderNo")==null?"":value.get("orderNo").toString(),wcf_left));
  
                     sheet.addCell(new Label(2,
j+1,value.get("ordertime")==null?"":value.get("ordertime").toString(),wcf_left));
  
                     sheet.addCell(new Label(3,
j+1,value.get("ordermoney")==null?"":value.get("ordermoney").toString(),wcf_left));
  
                     sheet.addCell(new Label(4,
j+1,value.get("realMoneyS")==null?"":value.get("realMoneyS").toString(),wcf_left));
                        String orderstatu=value.get("orderstatu")==null?"":value.get("orderstatu").toString();
                        String orderstatus="";
                        if(orderstatu.equals("0")){
                            orderstatus="未支付";
                        }else if(orderstatu.equals("1")){
                            orderstatus="已支付";
                        }else if(orderstatu.equals("-1")){
                            orderstatus="已取消";
                        }else if(orderstatu.equals("-2")){
                            orderstatus="已失效";
                        }
                        sheet.addCell(new Label(5, j+1,orderstatus,wcf_left));
  
                     sheet.addCell(new Label(6,
j+1,value.get("paymentway")==null?"":value.get("paymentway").toString(),wcf_left));
                    }
                }
            }
           /** **********将以上缓存中的内容写到EXCEL文件中******** */
           workbook.write();
           /** *********关闭文件************* */
           workbook.close();  
          } catch (Exception e) {
              result="系统提示:Excel文件导出失败,原因:"+ e.toString();
             // System.out.println(result);
              e.printStackTrace();
          }finally{
              if(list!=null)list.clear();
          }
          return result;
         }

2.调用导出方法

List<String> header=new ArrayList<String>();
                header.add("用户名");
                header.add("订单号");
                header.add("订单时间");
                header.add("订单金额");
                header.add("实际金额");
                header.add("订单状态");
                header.add("支付方式");
                ExportExcel.exportExcel(header,list,"订单表.xls","exportAllOrder",response);
                return null;

3.jsp页面,点击导出

<a href="访问后台导出的路径(访问2)">导出</a>

4.所使用jar包 jxl-2.6.jar

下载地址:http://files.cnblogs.com/chiyj/excel%E5%AF%BC%E5%87%BAjar.rar

java导出excel报表的更多相关文章

  1. Java使用POI实现数据导出excel报表

    Java使用POI实现数据导出excel报表 在上篇文章中,我们简单介绍了java读取word,excel和pdf文档内容 ,但在实际开发中,我们用到最多的是把数据库中数据导出excel报表形式.不仅 ...

  2. Atitit.导出excel报表的设计与实现java .net php 总

    Atitit.导出excel报表的设计与实现java .net php 总结 1. 导出报表 表格的设计要素1 1.1. 支持通用list<Map>转换1 1.2. 对于空列是否输出1 1 ...

  3. Atitit.导出excel报表的设计与实现java .net php 总结

    Atitit.导出excel报表的设计与实现java .net php 总结 1. 导出报表 表格的设计要素1 1.1. 支持通用list<Map>转换1 1.2. 对于空列是否输出1 1 ...

  4. poi导出Excel报表多表头双层表头、合并单元格

    效果图: controller层方法: /**     *      * 导出Excel报表     * @param request     * @return     *      */    @ ...

  5. 根据模板导出Excel报表并生成多个Sheet页

    因为最近用报表导出比较多,所有就提成了一个工具类,本工具类使用的场景为  根据提供的模板来导出Excel报表 并且可根据提供的模板Sheet页进行复制 从而实现多个Sheet页的需求, 使用本工具类时 ...

  6. 根据模板导出Excel报表并复制模板生成多个Sheet页

    因为最近用报表导出比较多,所有就提成了一个工具类,本工具类使用的场景为  根据提供的模板来导出Excel报表 并且可根据提供的模板Sheet页进行复制 从而实现多个Sheet页的需求, 使用本工具类时 ...

  7. java导出excel工具类

    java导出excel须要使用HSSFWorkbook这个类,须要导入poi-3.6-20091214.jar 工具类调用例如以下: package com.qlwb.business.util; i ...

  8. [转载]Java导出Excel

    一.需求介绍 当前B/S模式已成为应用开发的主流,而在开发企业办公系统的过程中,常常有客户这样子要求:把系统数据库中的数据导出到Excel,用户查看报表时直接用Excel打开.或者是:用户已经习惯用E ...

  9. 从数据库中导出excel报表

    通常需要将后台数据库中的数据集或者是其他列表等导出excel 报表,这里主要引用了Apose.cells dll 类库, (1)直接上主要代码: protected void txtExport_Cl ...

随机推荐

  1. 如何保持iOS上键盘出现时输入框不被覆盖

    在 iOS5 上请求显示键盘时,系统从屏幕底部将键盘滑入上来,位于应用的内容之上. (墙内:http://mikixiyou.iteye.com/blog/1488302) 如果屏幕中的内容项目比较多 ...

  2. iOS 进阶 第十三天(0414)

    0414 画线.圆和圆弧的第二种方法 5中方法画矩形: 第二种画图形的方法: 之前做的方法都是先把要画的元素缓存到图形上下文CGConteextRef中去,现在第二种方法也缓存到CGPath中去.其实 ...

  3. Java反射在JVM的实现

    1. 什么是Java反射,有什么用?反射使程序代码能够接入装载到JVM中的类的内部信息,允许在编写与执行时,而不是源代码中选定的类协作的代码,是以开发效率换运行效率的一种手段.这使反射成为构建灵活应用 ...

  4. Oracle 删除表分区

    删除表分区(drop partition)    删除表分区包含两种操作,分别是:   Ø 删除分区:alter table [tbname] drop partition [ptname] UPDA ...

  5. [问题]C# 结构体对齐:如何将变长byte数组对齐

    [StructLayout(LayoutKind.Sequential,Pack=1)] struct Report_Read_Parameter { byte Confirmation; byte ...

  6. 修改tomcat 启动45秒

    当我们需要增加Tomcat的启动时间,修改方法如下:

  7. JS打字效果的动态菜单代码分享

    这篇文章主要介绍了JS打字效果的动态菜单,推荐给大家,有需要的小伙伴可以参考下. 这是一款基于javascript实现的打字效果的动态菜单特效代码,分享给大家学习学习. 小提示:浏览器中如果不能正常运 ...

  8. c库函数之scanf

    scanf()函数的原理 想象输入设备(键盘)连接着一个叫“缓冲”的东西,把缓冲认为是一个字符数组. 当你的程序执行到scanf时,会从你的缓冲区读东西,如果缓冲区是空的,就阻塞住,等待你从键盘输入. ...

  9. texCUBE() to CubemapSampler.Sample()

    update dx9 to dx11 refers to   CUBEMAP sampler texCUBE(CubeMpaSampler,normal) maybe change to Cubema ...

  10. Linux下配置安装PHP环境

    参考别人的做法,遇到问题上网查,下面就是安装步骤. 一.安装Apache2.2.221.到官网下载  http://httpd.apache.org/download.cgi    2.解压    t ...