JAVA导出Excel封装

1、数据bean

/**
 * Excel Bean
 * @author rubekid
 *
 */
public class ExcelBean {

    private String name;

    private String sheetName;

    private String[] titles;

    private List<String[]> dataList;

    private boolean headBold = true;

    private int columnWidth = 6000;

    public ExcelBean(String name, String sheetName, String[] titles){
        this.name = name;
        this.sheetName = sheetName;
        this.titles = titles;
        this.dataList = new ArrayList<String[]>();
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getSheetName() {
        return sheetName;
    }

    public void setSheetName(String sheetName) {
        this.sheetName = sheetName;
    }

    public String[] getTitles() {
        return titles;
    }

    public void setTitles(String[] titles) {
        this.titles = titles;
    }

    public List<String[]> getDataList() {
        return dataList;
    }

    public void setDataList(List<String[]> dataList) {
        this.dataList = dataList;
    }

    public boolean isHeadBold() {
        return headBold;
    }

    public void setHeadBold(boolean headBold) {
        this.headBold = headBold;
    }

    public int getColumnWidth() {
        return columnWidth;
    }

    public void setColumnWidth(int columnWidth) {
        this.columnWidth = columnWidth;
    }

    public void add(String[] data){
        this.dataList.add(data);
    }

}

2、工具类

/**
 * excel 工具类
 * @author rubekid
 *
 */
public class ExcelUtils {

    public static void export( ExcelBean excelBean) throws Exception{
        HSSFWorkbook wb = new HSSFWorkbook();
        HSSFSheet sheet = wb.createSheet(excelBean.getSheetName());
        HSSFRow row = sheet.createRow(0);

        //设置样式
        HSSFCellStyle style = wb.createCellStyle();
        if(excelBean.isHeadBold()){
            HSSFFont headfont = wb.createFont();
            headfont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
            style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
            style.setFont(headfont);
        }

        HSSFCell cell;
        String[] titles = excelBean.getTitles();
        for(int i=0; i < titles.length; i++){
            cell= row.createCell(i);
            cell.setCellValue(titles[i]);
            cell.setCellStyle(style);
            sheet.setColumnWidth(i, excelBean.getColumnWidth());
        }

        int rowNumber = 1;
        for(String[] data : excelBean.getDataList()){
            row = sheet.createRow(rowNumber ++ );
            for(int j=0; j<data.length; j ++){
                cell = row.createCell(j);
                cell.setCellValue(data[j]);
            }
        }

        HttpServletResponse response = Struts2Utils.getResponse();
        response.setContentType("application/octet-stream;charset=utf-8");
        response.setCharacterEncoding("utf-8");

        String filename = excelBean.getName();
        filename = new String(filename.replaceAll("\\s|;", "").getBytes("gbk"), "ISO8859-1");
        response.setContentType("application/vnd.ms-excel");
        response.setHeader("Content-disposition", "attachment;filename=" + filename);
        OutputStream ouputStream = response.getOutputStream();
        wb.write(ouputStream);
        ouputStream.flush();
        ouputStream.close();
    }

}

3、Demo

        String[] titles = {"姓名", "年龄", "性别", "身高"};
        ExcelBean excelBean = new ExcelBean("成员.xls", "少儿组", titles);
        excelBean.add(new String[]{"王仔", "10", "男", "120"});
        excelBean.add(new String[]{"王妞", "9", "女", "110"});
        ExcelUtils.export(excelBean);
时间: 2024-11-05 13:45:22

JAVA导出Excel封装的相关文章

JAVA导出EXCEL实现

JAVA导出EXCEL实现的多种方式 java导出Excel的方法有多种,最为常用的方式就是使用第三方jar包,目前POI和JXL是最常用的二方包了,也推荐使用这两种. POI实现 POI这里不详细解释,可参考徐老师发的博客:http://blog.csdn.net/evangel_z/article/details/7332535,他利用开源组件POI3.0.2动态导出EXCEL文档的通用处理类ExportExcel,详细使用方法下载最新代码看看就可以里,徐老师写的很明了!总之思路就是用Ser

java 操作 Excel,java导出excel

WritableWorkbook out = null; try { response.getServletResponse().reset(); ((HttpServletResponse) response.getServletResponse()).setHeader("Content-Disposition", "attachment;filename=export.xls"); response.getServletResponse().setConten

Java导出Excel表(poi)名中文乱码问题处理

<pre name="code" class="java">String _filename = ValidateTools.date2Str(date, "yyyyMMddHHmmss"); String filename = f_name + _filename; HSSFSheet sheet; HSSFCell cell; response.setContentType("application/x-download

Java 通过Xml导出Excel文件,Java Excel 导出工具类,Java导出Excel工具类

Java 通过Xml导出Excel文件,Java Excel 导出工具类,Java导出Excel工具类 ============================== ?Copyright 蕃薯耀 2017年9月13日 http://www.cnblogs.com/fanshuyao/ 直接上代码: import java.io.IOException; import java.lang.reflect.InvocationTargetException; import java.lang.ref

Java导出Excel三表头

1.问题背景 Java导出Excel表格时,表头出现了三个,即多表头Excel 2.实现源码 /** * * @Project:Report * @Title:ThreeHead.java * @Package:com.you.excel * @Description: * @Author:YouHaiDong * @Date:2015年11月4日 下午3:10:12 * @Version: */ package com.you.excel; import java.io.FileOutputS

Java POI 导出EXCEL经典实现 Java导出Excel弹出下载框

在web开发中,有一个经典的功能,就是数据的导入导出.特别是数据的导出,在生产管理或者财务系统中用的非常普遍,因为这些系统经常要做一些报表打印的工作.而数据导出的格式一般是EXCEL或者PDF,我这里就用两篇文章分别给大家介绍下.(注意,我们这里说的数据导出可不是数据库中的数据导出!么误会啦^_^) 呵呵,首先我们来导出EXCEL格式的文件吧.现在主流的操作Excel文件的开源工具有很多,用得比较多的就是Apache的POI及JExcelAPI.这里我们用Apache POI!我们先去Apach

java导出excel不需要额外jar包

目前我知道的在java中导出Excel可以用poi或在jsp的文件头改变输出流.下面再介绍一种就用java基础包导出的Excel.导出的格式形如: 源码如下: package csvExcel; import java.io.FileWriter; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java

Java学习之道:Java 导出EXCEL

1.Apache POI简介 Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程式对Microsoft Office格式档案读和写的功能. .NET的开发人员则可以利用NPOI (POI for .NET) 来存取 POI 的功能. 2.POI结构 HSSF - 提供读写Microsoft Excel XLS格式档案的功能. XSSF - 提供读写Microsoft Excel OOXML XLSX格式档案的功能. HWPF - 提供读写Microsoft

java导出excel报表

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.for