• 大小: 31KB
    文件类型: .java
    金币: 1
    下载: 0 次
    发布日期: 2021-05-15
  • 语言: Java
  • 标签: 工具类  

资源简介

可进行excel的导出 支持图片的导出,亲自使用的整合到了一起

资源截图

代码片段和文件信息

package com.hibro.util;

import org.apache.poi.hssf.usermodel.*;
import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.ss.util.CellRangeAddress;

import javax.imageio.ImageIO;
import javax.servlet.http.HttpServletResponse;
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.net.URL;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * Created by admin on 2018/8/24.
 */
public class CommonExcel {

    //显示的导出表的标题
    private String title;
    //导出表的列名
    private String[] rowName;
    //导出的文件名
    private String fileName;

    private Listject[]> dataList = new ArrayListject[]>();

    private HttpServletResponse response;
    /** 时间格式:默认为yyyy-MM-dd */
    private String DATE_PATTERN = “yyyy-MM-dd“;

    /** 图片宽度,默认为:100 */
    private int IMAGE_WIDTH = 30;

    /** 图片高度,默认为:50 */
    private int IMAGE_HEIGHT = 5;

    /** 单元格的最大宽度 */
    private int[] maxWidth;

    /**
     * 单页支持最多数据列:超过65534会出错
     * 若数据列多余65534则需要通过MORE_EXCEL_FLAG、MORE_SHEET_FLAG来区别生成多个Excel、还是sheet
     */
    private int maxRowCount = 2500;

    /** 大量数据,多个Excel标识---0001 */
    private String  MORE_EXCEL_FLAG = “0001“;

    /** 大量数据,多个sheet标识---0001 */
    private String MORE_SHEET_FLAG = “0002“;
    //构造方法,传入要导出的数据
    public CommonExcel(String title String[] rowName Listject[]> dataList HttpServletResponse response String fileName) {
        this.dataList = dataList;
        this.rowName = rowName;
        this.title = title;
        this.response = response;
        this.fileName = fileName;
    }

    /*
     * 导出数据
     */
    public void downloadExcel() throws Exception {
        try {
            HSSFWorkbook workbook = new HSSFWorkbook();                     // 创建工作簿对象
            HSSFSheet sheet = workbook.createSheet(title);                  // 创建工作表

            // 产生表格标题行
            HSSFRow rowm = sheet.createRow(0);
            HSSFCell cellTiltle = rowm.createCell(0);

            //sheet样式定义【getColumnTopstyle()/getstyle()均为自定义方法 - 在下面  - 可扩展】
            HSSFCellstyle columnTopstyle = this.getColumnTopstyle(workbook);//获取列头样式对象
            HSSFCellstyle style = this.getstyle(workbook);                  //单元格样式对象

            sheet.addMergedRegion(new CellRangeAddress(0 1 0 (rowName.length - 1)));
            cellTiltle.setCellstyle(columnTopstyle);
            cellTiltle.setCellValue(title);

            // 定义所需列数
            int columnNum = rowName.length;
            HSSFRow rowRowName = sheet.createRow(2);                // 在索引2的位置创建行(最顶端的行开始的第二行

评论

共有 条评论