java导出Excel通用方法的实例详解

java导出Excel通用方法的实例详解

Java导出Excel通用方法,只需要一个list 集合。通用方法改进之处踊跃提出

package oa.common.utils;
import java.io.OutputStream;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts2.ServletActionContext;
import java.lang.reflect.Field; 

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;
/***
 * @author lsf
 */
public class ExportExcel {
 /***************************************************************************
 * @param fileName EXCEL文件名称
 * @param listTitle EXCEL文件第一行列标题集合
 * @param listContent EXCEL文件正文数据集合
 * @return
 */
 public final static String exportExcel(String fileName,String[] Title, List<Object> listContent) {
 String result="系统提示:Excel文件导出成功!";
 // 以下开始输出到EXCEL
 try {
  //定义输出流,以便打开保存对话框______________________begin
  HttpServletResponse response=ServletActionContext.getResponse();
  OutputStream os = response.getOutputStream();// 取得输出流
  response.reset();// 清空输出流
  response.setHeader("Content-disposition", "attachment; filename="+ new String(fileName.getBytes("GB2312"),"ISO8859-1"));
// 设定输出文件头
  response.setContentType("application/msexcel");// 定义输出类型
  //定义输出流,以便打开保存对话框_______________________end 

  /** **********创建工作簿************ */
  WritableWorkbook workbook = Workbook.createWorkbook(os); 

  /** **********创建工作表************ */ 

  WritableSheet sheet = workbook.createSheet("Sheet1", 0); 

  /** **********设置纵横打印(默认为纵打)、打印纸***************** */
  jxl.SheetSettings sheetset = sheet.getSettings();
  sheetset.setProtected(false); 

  /** ************设置单元格字体************** */
  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); // 文字是否换行   

  /** ***************以下是EXCEL开头大标题,暂时省略********************* */
  //sheet.mergeCells(0, 0, colWidth, 0);
  //sheet.addCell(new Label(0, 0, "XX报表", wcf_center));
  /** ***************以下是EXCEL第一行列标题********************* */
  for (int i = 0; i < Title.length; i++) {
  sheet.addCell(new Label(i, 0,Title[i],wcf_center));
  }
  /** ***************以下是EXCEL正文数据********************* */
  Field[] fields=null;
  int i=1;
  for(Object obj:listContent){
    fields=obj.getClass().getDeclaredFields();
    int j=0;
    for(Field v:fields){
      v.setAccessible(true);
      Object va=v.get(obj);
      if(va==null){
        va="";
      }
      sheet.addCell(new Label(j, i,va.toString(),wcf_left));
      j++;
    }
    i++;
  }
  /** **********将以上缓存中的内容写到EXCEL文件中******** */
  workbook.write();
  /** *********关闭文件************* */
  workbook.close();   

 } catch (Exception e) {
  result="系统提示:Excel文件导出失败,原因:"+ e.toString();
  System.out.println(result);
  e.printStackTrace();
 }
 return result;
 }
}

测试:

/**
 * 导出excel
 * @return
 */
public String excelPage(){
  ExportExcel excel=new ExportExcel();
  String str="";
  try {
    str = new String(getHTTP.getRequest().getParameter("wineOrg.orgName").getBytes("iso8859-1"),"UTF-8");
  } catch (UnsupportedEncodingException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
  }
  wineOrg.setOrgName(str);
  List<Object> li=service.exportExcel(wineOrg);
  String[] Title={"机构ID","会员编号","类别","名称","省ID","省名称","城市ID","城市名称","详细地址","联系人","性别","联系手机","联系电话","传真","邮箱","QQ","生日","积分","客户等级","现金账户余额","结算方式","客户类型","购买次数","购买支数","创建人ID","创建人姓名","create_time","del","STS","备注","负责人ID","负责人姓名","审核标识","审核人ID ","审核人姓名","审核日期","分配人ID","分配人姓名","分配日期","修改人ID","修改人姓名 ","修改时间"};
  excel.exportExcel("客户资料信息.xls",Title, li);
  return SUCCESS;
}

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

(0)

相关推荐

  • java编程实现根据EXCEL列名求其索引的方法

    本文实例讲述了java编程实现根据EXCEL列名求其索引的方法.分享给大家供大家参考,具体如下: 原理: [a1-z26]*26^n-1 + [a1-z26]*26^n-2 + ... + [a1-z26]*26^0 具体代码如下: /* * To change this template, choose Tools | Templates * and open the template in the editor. */ import java.util.HashMap; import jav

  • java实现excel和txt文件互转

    话不多说,请看代码: import java.io.*; import jxl.*; import jxl.write.*; //用java将txt数据导入excel public class CreateXLS { public static void main(String args[]) { try { //打开文件 WritableWorkbook book= Workbook.createWorkbook(new File("测试.xls")); //生成名为"第一

  • java实现Excel的导入、导出

    一.Excel的导入 导入可采用两种方式,一种是JXL,另一种是POI,但前者不能读取高版本的Excel(07以上),后者更具兼容性.由于对两种方式都进行了尝试,就都贴出来分享(若有错误,请给予指正) 方式一.JXL导入  所需jar包 JXL.jar publicstaticList<PutStorageInfo> readExcelByJXL(String filePath){ List<PutStorageInfo> infoList =newArrayList<Put

  • java实现合并单元格的同时并导出excel示例

    介绍 POI提供API给Java程序对Microsoft Office格式档案读和写的功能.POI可以操作的文档格式有excel,word,powerpoint等,POI进行跨行需要用到对象HSSFSheet对象,现在就当我们程序已经定义了一个HSSFSheet对象sheet. 跨第1行第1个到第2个单元格的操作为 sheet.addMergedRegion(new Region(0,(short)0,0,(short)1)); 跨第1行第1个到第2行第1个单元格的操作为 sheet.addMe

  • java 文件大数据Excel下载实例代码

    java 文件大数据Excel下载实例代码 excel可以用xml表示.故可以以此来实现边写边下载文件 package com.tydic.qop.controller; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.I

  • Windows中使用Java生成Excel文件并插入图片的方法

    生成简单的Excel文件  在现实的办公中,我们常常会有这样一个要求:要求把报表直接用excel打开.在实习中有这样一个需求.根据所选择的资源查询用户所提供附件的全部信息并生成excel供下载.但是在查询的时候我们需要来检测用户所提供的附件里面的信息是否有错误(身份证).有错误的生成错误信息excel.      Apache的POI项目,是目前比较成熟的HSSF接口,用来处理Excel对象.其实POI不仅仅只能处理excel,它还可以处理word.PowerPoint.Visio.甚至Outl

  • java导出大批量(百万以上)数据的excel文件

    本文实例为大家分享了java导出百万以上数据的excel文件,供大家参考,具体内容如下 1.传统的导出方式会消耗大量的内存,2003每个sheet页最多65536条数据,2007每个sheet页可以达到100万条数据以上,2007会在生成Workbook时清理数据,所以2007导出量更大; 2.可以导出多个excel文件到某个目录中,然后打包下载; 3.导出excel格式的xml文件,这种方式可以分批导出数据,适用于大批量数据的导出,以下简单介绍这种方式: 代码如下: package com.e

  • Java web的读取Excel简单实例代码

    目录结构: Data.xls数据: 后台页面: public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //System.out.println(this.getServletContext().getRealPath ("/")); try{ Workbook wb = Workbook.getWorkbook(

  • java利用注解实现简单的excel数据读取

    实现工具类 利用注解实现简单的excel数据读取,利用注解对类的属性和excel中的表头映射,使用Apache的poi就不用在业务代码中涉及row,rows这些属性了. 定义注解: @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.FIELD) public @interface Excel { String name(); } 由于本例中只涉及根据Excel表头部分对Excel进行解析,只定义了一个name作为和Excel表头的隐射

  • java导出Excel通用方法的实例详解

    java导出Excel通用方法的实例详解 Java导出Excel通用方法,只需要一个list 集合.通用方法改进之处踊跃提出 package oa.common.utils; import java.io.OutputStream; import java.util.List; import javax.servlet.http.HttpServletResponse; import org.apache.struts2.ServletActionContext; import java.lan

  • java导出Excel通用方法实例

    数据导出到Excel几乎是所有客户都会提出的一个需求.下面我就分享一下我的代码. 首先需要引入的jar包: 然后就是正式代码了. package lcy._41_50; import java.io.FileOutputStream; import java.io.OutputStream; import java.net.URLEncoder; import javax.servlet.http.HttpServletResponse; import org.apache.poi.hssf.u

  • Python爬取微信小程序通用方法代码实例详解

    背景介绍 最近遇到一个需求,大致就是要获取某个小程序上的数据.心想小程序本质上就是移动端加壳的浏览器,所以想到用Python去获取数据.在网上学习了一下如何实现后,记录一下我的实现过程以及所踩过的小坑.本文关键词:Python,小程序,Charles抓包 目标小程序: 公众号"同城商圈网"左下角"找商家"->汽车维修->小车维修->所有的商家信息,如下图所示: 环境 PC端:Windows 10 移动端:iPhone 软件:Charles Char

  • java 中createStatement()方法的实例详解

    java 中createStatement()方法的实例详解 用缺省设置创建时,ResultSet 是一种只能访问一次(one-time-through).只能向前访问(forward-only)和只读的对象.您只能访问数据一次,如果再次需要该 数据,必须重新查询数据库. 然而,并不只有这一种方式.通过设置 Statement 对象上的参数,您可以控制它产生的 ResultSet.例如: ... Class.forName(driverName); db = DriverManager.getC

  • java 中序列化与readResolve()方法的实例详解

    java 中序列化与readResolve()方法的实例详解 readResolve方法是作用是什么?这个方法跟对象的序列化相关(这样倒是解释了为什么 readResolve方法是private修饰的). 怎么跟对象的序列化相关了? 下面我们先简要地回顾下对象的序列化.一般来说,一个类实现了 Serializable接口,我们就可以把它往内存地写再从内存里读出而"组装"成一个跟原来一模一样的对象.不过当序列化遇到单例时,里边就有了个问题:从内存读出而组装的对象破坏了单例的规则.单例是要

  • Java静态工厂方法的实例详解

     Java静态工厂方法的实例详解 什么是静态工厂方法 对于类而言,为了让使用者获取它自身的一个实例,最常用的方法就是提供一个公有的构造器. 当然,这里要介绍的是另一种方法--静态工厂方法,一个返回类的实例的静态方法. 举个例子,Boolean的一个将基本类型boolean转为封装类的方法,valueOf: public static Boolean valueOf(boolean b) { return (b ? TRUE : FALSE); } 为什么要使用静态工厂方法 那么,我们为什么要使用

  • Java编程思想对象的容纳实例详解

    Java提供了容纳对象(或者对象的句柄)的多种方式,接下来我们具体看看都有哪些方式. 有两方面的问题将数组与其他集合类型区分开来:效率和类型.对于Java来说,为保存和访问一系列对象(实际是对象的句柄)数组,最有效的方法莫过于数组.数组实际代表一个简单的线性序列,它使得元素的访问速度非常快,但我们却要为这种速度付出代价:创建一个数组对象时,它的大小是固定的,而且不可在那个数组对象的"存在时间"内发生改变.可创建特定大小的一个数组,然后假如用光了存储空间,就再创建一个新数组,将所有句柄从

  • java实现可安装的exe程序实例详解

    java实现可安装的exe程序实例详解 通过编写Java代码,实现可安装的exe文件的一般思路: 1.在eclipse中创建java项目,然后编写Java代码,将编写好的Java项目导出一个.jar格式的jar包: 2.通过安装exe4j软件,将导出的.jar格式的文件制作成.exe格式的可执行的文件,(注意:此时的.exe文件只是可以执行,还不能够安装): 3.通过安装Inno setup软件,将可执行的.exe格式的文件..jar格式的文件以及其它需要的文件制作成一个可安装的.exe格式的文

  • Java并发编程(CyclicBarrier)实例详解

    Java并发编程(CyclicBarrier)实例详解 前言: 使用JAVA编写并发程序的时候,我们需要仔细去思考一下并发流程的控制,如何让各个线程之间协作完成某项工作.有时候,我们启动N个线程去做一件事情,只有当这N个线程都达到某一个临界点的时候,我们才能继续下面的工作,就是说如果这N个线程中的某一个线程先到达预先定义好的临界点,它必须等待其他N-1线程也到达这个临界点,接下来的工作才能继续,只要这N个线程中有1个线程没有到达所谓的临界点,其他线程就算抢先到达了临界点,也只能等待,只有所有这N

  • java与JSON数据的转换实例详解

    java与JSON数据的转换实例详解 JSON与JAVA数据的转换(JSON 即 JavaScript Object Natation,它是一种轻量级的数据交换格式,非常适合于服务器与 JavaScript 的交互.) 代码中有这么一句,是后台的封装数据. JSONObject jo = JSONObject.fromObject(map); 常见的java代码转换成json --请注意,这个方法曾经给我造成过困惑.因为,它在对Object转换的时候是按照domain类中的所有getXXX()方

随机推荐