java语言将数据导出成excel代码


1.需要引入的maven依赖



<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.9</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>com.springsource.org.apache.poi</artifactId>
<version>3.9.0.FINAL</version>
</dependency>


2.具体代码如下


package com.bj58.jxedt.app.util;  
  
import java.io.File;  
import java.io.FileOutputStream;  
  
import org.apache.poi.hssf.usermodel.HSSFCell;  
import org.apache.poi.hssf.usermodel.HSSFCellStyle;  
import org.apache.poi.hssf.usermodel.HSSFFont;  
import org.apache.poi.hssf.usermodel.HSSFRichTextString;  
import org.apache.poi.hssf.usermodel.HSSFRow;  
import org.apache.poi.hssf.usermodel.HSSFSheet;  
import org.apache.poi.hssf.usermodel.HSSFWorkbook;  
import org.apache.poi.hssf.util.HSSFColor;  
import org.apache.poi.ss.util.CellRangeAddress;  
  
/** 
 * 该类为数据导出成excel工具类 
 * @version 2017/08/23 
 * @author gongxiaohai 
 * 
 */  
public class ExportExcelUtil {  
  
    /** 
     * 创建一个excel文件 
     */  
    private HSSFWorkbook wb = null;  
      
    /** 
     * 创建一个excel工作表 
     */  
    private HSSFSheet sheet = null;  
      
    /** 
     * 无参构造函数 
     */  
    public ExportExcelUtil() {  
        this(new HSSFWorkbook());  
    }  
      
    /** 
     * 一个参数的构造函数(ps:不存在只有sheet的构造函数,因为sheet是从wb中创建而来的) 
     * @param wb 
     */  
    public ExportExcelUtil(HSSFWorkbook wb){  
        this(wb,wb.createSheet());  
    }  
      
    /** 
     * 双参构造函数 
     * @param wb        excel文件 
     * @param sheet     工作表 
     */  
    public ExportExcelUtil(HSSFWorkbook wb,HSSFSheet sheet){  
        this.wb = wb;  
        this.sheet = sheet;  
    }  
      
    /** 
     * @return      wb 
     */  
    public HSSFWorkbook getWb() {  
        return wb;  
    }  
  
    /** 
     * @param wb    set wb to this.wb 
     */  
    public void setWb(HSSFWorkbook wb) {  
        this.wb = wb;  
    }  
  
    /** 
     * @return      sheet 
     */  
    public HSSFSheet getSheet() {  
        return sheet;  
    }  
  
    /** 
     * @param sheet     set sheet to this.sheet 
     */  
    public void setSheet(HSSFSheet sheet) {  
        this.sheet = sheet;  
    }  
      
    /** 
     * 创建通用excel头部 
     * @param headString    头部显示的字符串 
     * @param colSum        该报表列数 
     */  
    public void createNormalHead(String headString,int colSum){  
        HSSFRow row = sheet.createRow(0);  
        //设置第一行  
        HSSFCell cell = row.createCell(0);  
          
        //合并第一行前colSum列  
        sheet.addMergedRegion(new CellRangeAddress(0,0,0,colSum - 1));  
        //CellRangeAddress类用来替代org.apache.poi.hssf.util.Region,sheet中使用Region的一系列方法都已过期。  
        //CellRangeAddress中四个参数的意思为,以参数为1,2,3,4为例:将从第0行到第1行,从第2列到第3列的单元格合并。  
          
        //定义单元格为字符串类型  
        cell.setCellType(HSSFCell.ENCODING_UTF_16);//中文处理  
        cell.setCellValue(new HSSFRichTextString(headString));//设置单元格的值  
          
        //定义单元格格式,添加单元格表样式,并添加到工作簿  
        HSSFCellStyle cellStyle = wb.createCellStyle();  
        //设置单元格对齐类型  
        cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);//指定单元格水平居中对齐  
        cellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);//指定单元格垂直居中对齐  
        cellStyle.setWrapText(true);//指定单元格自动换行  
        cellStyle.setLeftBorderColor(HSSFColor.BLACK.index);//设置左边框颜色  
        cellStyle.setBorderLeft((short)1);//设置左边框大小  
        cellStyle.setRightBorderColor(HSSFColor.BLACK.index);//设置右边框颜色  
        cellStyle.setBorderRight((short)1);//设置右边框大小  
          
        //设置单元格字体  
        HSSFFont font = wb.createFont();  
          
        font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);//设置内容加粗  
        font.setFontName("宋体");//设置字体  
        font.setFontHeight((short)600);//设置字体高度  
        //font.setFontHeightInPoints((short)10);//设置字体大小  
          
        cellStyle.setFont(font);  
        cell.setCellStyle(cellStyle);  
          
    }  
      
    /** 
     * 创建通用excel第二行 
     * @param params    用来表示第二行中小标题内容的数组 
     */  
    public void createNormalTwoRow(String[] params){  
        //创建第二行  
        HSSFRow row = sheet.createRow(1);  
        row.setHeight((short)400);  
          
        HSSFCell cell = row.createCell(0);  
          
        cell.setCellType(HSSFCell.ENCODING_UTF_16);  
        cell.setCellValue(new HSSFRichTextString("" + ""));  
          
          
        //定义单元格格式,添加单元格样式表,并添加到工作簿  
        HSSFCellStyle cellStyle = wb.createCellStyle();  
        cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);//设置单元格水平居中  
        cellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);//设置单元格垂直居中  
        cellStyle.setWrapText(true);//设置单元格自动换行  
          
        //设置单元格字体  
        HSSFFont font = wb.createFont();  
        font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);  
        font.setFontName("宋体");  
        font.setFontHeight((short)250);  
          
        cell.setCellStyle(cellStyle);  
          
        for(int i = 0 ; i < params.length ; i ++){  
            cell = row.createCell(i);  
              
            cell.setCellValue(params[i]);  
        }  
    }  
      
    /** 
     * 设置工作表列宽 
     * @param arg   每列宽度 
     */  
    public void setSheetColumnWidth(int arg[]) throws Exception{  
        for(int i = 0 ;i < arg.length; i ++ ){  
            //设置工作表列宽  
            sheet.setColumnWidth(i, arg[i]);  
        }  
    }  
    /** 
     * 设置excel标题 
     * @param columHeader   标题字符串数组 
     */  
    public void createColumHeader(String[] columHeader){  
          
        //设置列头,在第三行  
        HSSFRow row = sheet.createRow(2);  
          
        //指定行高  
        row.setHeight((short)600);  
          
        //设置单元格格式,添加单元格样式,并添加到工作簿  
        HSSFCellStyle cellStyle = wb.createCellStyle();  
        cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);//设置单元格水平居中  
        cellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);//设置单元格垂直居中  
        cellStyle.setWrapText(true);//设置单元格自动换行  
          
        //单元格字体  
        HSSFFont font = wb.createFont();  
        font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);//设置字体加粗  
        font.setFontName("宋体");//设置字体格式  
        font.setFontHeight((short)250);  
        cellStyle.setFont(font);  
          
        //设置单元格背景色  
        cellStyle.setFillBackgroundColor(HSSFColor.GREY_25_PERCENT.index);  
        cellStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);  
          
        HSSFCell cell = null;  
          
        //从第二行开头开始创建单元格,并给每一个单元格赋值  
        for(int item = 0 ; item < columHeader.length; item ++){  
            cell = row.createCell(item);  
            cell.setCellType(HSSFCell.ENCODING_UTF_16);  
            cell.setCellStyle(cellStyle);  
            cell.setCellValue(new HSSFRichTextString(columHeader[item]));  
        }  
    }  
      
    /** 
     * 创建内容单元格 
     * @param wb        HSSFWorkbook 
     * @param row       HSSFRow 
     * @param col       short型的列索引 
     * @param align     对齐方式 
     * @param val       列值 
     */  
    public void createCell(HSSFWorkbook wb,HSSFRow row,int col,short align,String val){  
        //根据该行的第几列创建单元格  
        HSSFCell cell = row.createCell(col);  
        //设置单元格格式  
        cell.setCellType(HSSFCell.ENCODING_UTF_16);  
        cell.setCellValue(new HSSFRichTextString(val));//设置单元格值  
          
        //设置单元格样式,添加样式到工作簿  
        HSSFCellStyle cellStyle = wb.createCellStyle();  
        cellStyle.setAlignment(align);//设置单元格对齐  
        cell.setCellStyle(cellStyle);  
    }  
      
    /** 
     * 创建合计行 
     * @param colSum        需要合并到的列索引 
     * @param cellValue     列值 
     */  
    public void createLastSumRow(int colSum,String[] cellValue){  
          
        HSSFCellStyle cellStyle = wb.createCellStyle();  
        cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);//设置单元格水平居中  
        cellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);//设置单元格垂直居中  
        cellStyle.setWrapText(true);//设置单元格自动换行  
          
        //单元格字体  
        HSSFFont font = wb.createFont();  
        font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);  
        font.setFontName("宋体");  
        font.setFontHeight((short)250);  
        cellStyle.setFont(font);  
          
        //获取工作表最后一行  
        HSSFRow lastRow = sheet.createRow((short)(sheet.getLastRowNum() + 1));  
        HSSFCell sumCell = lastRow.createCell(0);  
          
        sumCell.setCellValue("合计");//设置单元格内容  
        sumCell.setCellStyle(cellStyle);  
          
        //合并  最后一行的第零列 至 最后一行的第一列  
        sheet.addMergedRegion(new CellRangeAddress(sheet.getLastRowNum(),sheet.getLastRowNum() - 1  
                ,sheet.getLastRowNum(),colSum));  
          
        for(int item = 2 ; item < (cellValue.length + 2) ; item++){  
            //定义最后一行的第三列  
            sumCell = lastRow.createCell(item);  
            sumCell.setCellStyle(cellStyle);  
              
            //定义数组,从0开始  
            sumCell.setCellValue(new HSSFRichTextString(cellValue[item - 2]));  
        }  
    }  
      
    /** 
     * 将数据输入到excel文件 
     * @param fileName      文件名 
     */  
    public void outputExcel(String fileName){  
        //定义文件输出流  
        FileOutputStream fos = null;  
        try{  
            fos = new FileOutputStream(new File(fileName));  
            wb.write(fos);//将数据写入文件中  
        }catch(Exception e){  
            e.printStackTrace();  
        }finally{  
            //防止资源的浪费,保证了即使出错也会回收资源  
            try{  
                fos.close();  
            }catch(Exception e2){  
                e2.printStackTrace();  
            }  
        }  
    }  
      
}  


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章