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;
}

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

时间: 2017-07-07

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

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

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列名求其索引的方法

本文实例讲述了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示例

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

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

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

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

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

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

Java利用POI实现导入导出Excel表格示例代码

介绍 Jakarta POI 是一套用于访问微软格式文档的Java API.Jakarta POI有很多组件组成,其中有用于操作Excel格式文件的HSSF和用于操作Word的HWPF,在各种组件中目前只有用于操作Excel的HSSF相对成熟.官方主页http://poi.apache.org/index.html,API文档http://poi.apache.org/apidocs/index.html 实现 已经在代码中加入了完整的注释. import java.io.FileInputSt

Java利用剪贴板实现交换程序间数据的方法

本文实例讲述了Java利用剪贴板交换程序间数据的实现方法.在图形化系统中,系统剪贴板非常重要,很难想象一个没有剪贴板功能的图形化操作系统使用起来会是怎样.本例就实现了Java 程序与所在系统的剪贴板的数据交流,当单击"Paste"按钮后,Java 程序从系统剪贴板中取得数据并显示在一个JTextArea 组件中:当单击"Copy"按钮后,文本区中的选中文本将被传送到系统剪贴板上. 首先必须得到系统剪贴板的实例引用,java.awt.Toolkit 类中提供了getS

Java利用自定义注解、反射实现简单BaseDao实例

在常见的ORM框架中,大都提供了使用注解方式来实现entity与数据库的映射,这里简单地使用自定义注解与反射来生成可执行的sql语句. 这是整体的目录结构,本来是为复习注解建立的项目^.^ 好的,首先我们来确定思路. 1. 自定义@Table @Column注解, 我们稍微模仿hibernate,让@Table作用于类上,来表明实体类与数据表的映射关系,且让@Table中的属性value映射为数据表的名称tableName:让@Column作用于属性上(这里没实现作用于set方法上),表明属性与

Java利用POI读取、写入Excel的方法指南

前言 Apache POI [1] 是用Java编写的免费开源的跨平台的 Java API,Apache POI提供API给Java程式对Microsoft Office格式档案读和写的功能.POI为"Poor Obfuscation Implementation"的首字母缩写,意为"简洁版的模糊实现". 做项目时经常有通过程序读取Excel数据,或是创建新的Excel并写入数据的需求: 网上很多经验教程里使用的POI版本都比较老了,一些API在新版里已经废弃,这里

java 利用java反射机制动态加载类的简单实现

如下所示: ////////////////// Load.java package org.bromon.reflect; import java.util.ArrayList; import java.util.List; public class Load implements Operator { @Override public List<?> act(List<?> params) { // TODO Auto-generated method stub List<

利用phpExcel实现Excel数据的导入导出(全步骤详细解析)

很多文章都有提到关于使用phpExcel实现Excel数据的导入导出,大部分文章都差不多,或者就是转载的,都会出现一些问题,下面是本人研究phpExcel的使用例程总结出来的使用方法,接下来直接进入正题. 首先先说一下,本人的这段例程是使用在Thinkphp的开发框架上,要是使用在其他框架也是同样的方法,很多人可能不能正确的实现Excel的导入导出,问题基本上都是phpExcel的核心类引用路径出错,如果有问题大家务必要对路劲是否引用正确进行测试. (一)导入Excel 第一,在前台html页面

Java利用Zxing生成二维码的简单实例

Zxing是Google提供的关于条码(一维码.二维码)的解析工具,提供了二维码的生成与解析的方法,现在我简单介绍一下使用Java利用Zxing生成与解析二维码 1.二维码的生成 1.1 将Zxing-core.jar 包加入到classpath下. 1.2 二维码的生成需要借助MatrixToImageWriter类,该类是由Google提供的,可以将该类拷贝到源码中,这里我将该类的源码贴上,可以直接使用. import com.google.zxing.common.BitMatrix; i

C#利用Openxml读取Excel数据实例

本文实例讲述了C#利用Openxml读取Excel数据的方法,分享给大家供大家参考.具体分析如下: 这里有些问题,如果当Cell 里面是 日期和浮点型的话,对应的Cell.DataType==Null,对应的时间会转换为一个浮点型,对于这块可以通过DateTime.FromOADate(double d)转换为时间. 可是缺点的地方就是,如果Cell.DataType ==NULL, 根本无法确认这个数据到底是 浮点型还是[被转换为了日期的浮点数].查阅了很多国外资料,的确国外博客有一部分都反映

Java利用正则表达式提取数据的方法

什么是正则表达式 正则表达式是一种可以用于模式匹配和替换的规范,一个正则表达式就是由普通的字符(例如字符a到z)以及特殊字符(元字符)组成的文字模式,它 用以描述在查找文字主体时待匹配的一个或多个字符串.正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配. Java利用正则表达式提取数据 Java正则表达式的用途很广,之前要用到将一大 3M 的 txt 文本切分成多个小文本,用 C# 写的话很简洁,代码也就二十几行,今天用 Java 写了一下,果然,Java 很罗嗦. 切分文件的代码