首页>代码>java代码通过poi操作excel文件,支持一个文件多个sheet生成>/tetsExcel/src/com/it/poi/ComplexExportExcelClient.java
package com.it.poi;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;

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 com.it.domain.School;
import com.it.domain.User;
  
/** 
 * 
 * 报表生成类
 *  
 */  
public class ComplexExportExcelClient {  
	
    private HSSFWorkbook wb = null;  
    
    private HSSFSheet sheet = null; 
	
    ExportExcel exportExcel = null;
    
    public ComplexExportExcelClient(){
    	wb = new HSSFWorkbook();
    	exportExcel = new ExportExcel(wb, sheet); 
    }
    
    SimpleDateFormat df = new SimpleDateFormat("yyyy年MM月dd日");//设置日期格式
    //System.out.println(df.format(new Date()));// new Date()为获取当前系统时间
    
    public String exportExcel(){
		//获取到报表的储存路径
    	String a = Thread.currentThread().getContextClassLoader().getResource(".").getPath();
		a = a.replace("/","\\\\"); 
		a=a.substring(0,0)+a.substring(2,a.length());
        a+=df.format(new Date()) + "_report_total.xls";
        exportExcel.outputExcel(a);
        return a;
    }

    
	/**
	 * 用户表
	 **/
	public String allUser(List<User> user){
		if (user.size()!=0) {
		//设置sheet名
		sheet = exportExcel.getWb().createSheet("用户表");
		exportExcel.setSheet(sheet);
        //报表的列数  (报表列是从0开始的,3-1指的是3列)
	    int number = 3-1;
        // 给工作表列定义列宽(实际应用自己更改列数)  
        for (int i = 0; i < number; i++) {
            sheet.setColumnWidth(i, 6000);  
        }
        // 创建单元格样式  
        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) 200);
        cellStyle.setFont(font);  
        // 创建报表头部  
        exportExcel.createNormalHead("用户表", number);  
        // 设置第二行  (报表的生成时间)
        String[] params = new String[] { df.format(new Date()), df.format(new Date())};  
        exportExcel.createNormalTwoRow(params, number);  
        // 设置列头  
        HSSFRow row2 = sheet.createRow(3-1);
        HSSFCell cell0 = row2.createCell(0);  
        cell0.setCellStyle(cellStyle);  
        cell0.setCellValue(new HSSFRichTextString("姓名"));  
        HSSFCell cell1 = row2.createCell(1);
        cell1.setCellStyle(cellStyle);  
        cell1.setCellValue(new HSSFRichTextString("密码"));  
        HSSFCell cell2 = row2.createCell(2);
        cell2.setCellStyle(cellStyle);  
        cell2.setCellValue(new HSSFRichTextString("地址"));
        // 循环创建中间的单元格的各项的值  
        for (int i = 0; i < user.size(); i++) {  
            HSSFRow row = sheet.createRow((short) i+3); 
            exportExcel.cteateCell(wb, row, (short) 0,
            HSSFCellStyle.ALIGN_CENTER_SELECTION,user.get(i).getName());  
            exportExcel.cteateCell(wb, row, (short) 1,
            HSSFCellStyle.ALIGN_CENTER_SELECTION,user.get(i).getPassword());  
            exportExcel.cteateCell(wb, row, (short) 2,
            HSSFCellStyle.ALIGN_CENTER_SELECTION,user.get(i).getAddress());
        }  
	} 
	return "";
	}
	
	
	
	
	/**
	 * 学校表
	 **/
	public String allSchool(List<School> school){
		if (school.size()!=0) {
		//设置sheet名
		sheet = exportExcel.getWb().createSheet("学校表");
		exportExcel.setSheet(sheet);
        // 计算该报表的列数   (报表列是从0开始的,3-1指的是3列)
	    int number = 3-1;
        // 给工作表列定义列宽(实际应用自己更改列数)  
        for (int i = 0; i < number; i++) {  
            sheet.setColumnWidth(i, 6000);  
        }
        // 创建单元格样式  
        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) 200);  
        cellStyle.setFont(font);  
        // 创建报表头部  
        exportExcel.createNormalHead("学校表", number);  
        // 设置第二行  
        String[] params = new String[] { df.format(new Date()), df.format(new Date())};  
        exportExcel.createNormalTwoRow(params, number);  
        // 设置列头  
        HSSFRow row2 = sheet.createRow(3-1);
        HSSFCell cell0 = row2.createCell(0);  
        cell0.setCellStyle(cellStyle);  
        cell0.setCellValue(new HSSFRichTextString("名称"));  
        HSSFCell cell1 = row2.createCell(1);
        cell1.setCellStyle(cellStyle);  
        cell1.setCellValue(new HSSFRichTextString("地址"));  
        HSSFCell cell2 = row2.createCell(2);
        cell2.setCellStyle(cellStyle);  
        cell2.setCellValue(new HSSFRichTextString("电话"));
        // 循环创建中间的单元格的各项的值  
        for (int i = 0; i < school.size(); i++) {  
            HSSFRow row = sheet.createRow((short) i+3); 
            exportExcel.cteateCell(wb, row, (short) 0,
            HSSFCellStyle.ALIGN_CENTER_SELECTION,school.get(i).getName());  
            exportExcel.cteateCell(wb, row, (short) 1,
            HSSFCellStyle.ALIGN_CENTER_SELECTION,school.get(i).getAddress());  
            exportExcel.cteateCell(wb, row, (short) 2,
            HSSFCellStyle.ALIGN_CENTER_SELECTION,school.get(i).getTelephone());
        } 
	}
	return "";
	}
	

}   
最近下载更多
1358849392  LV21 2023年11月21日
745075779  LV5 2022年2月8日
Bai_yk  LV17 2021年11月17日
zhh1355  LV14 2021年5月15日
一字清华  LV8 2021年3月6日
A_xiaobao  LV9 2020年9月5日
123456nty  LV37 2020年8月18日
simple丶余心  LV21 2020年7月1日
luesjim  LV11 2020年4月21日
天气预报  LV11 2020年4月1日
最近浏览更多
1358849392  LV21 2023年11月21日
weijianguo  LV7 2023年5月21日
8战魂5无双8  LV43 2022年9月13日
最代码灬丿正牌  LV16 2022年9月4日
745075779  LV5 2022年2月8日
地方撒地方的  LV2 2021年12月18日
2607825144qq  LV3 2021年12月8日
释辰 2021年10月29日
暂无贡献等级
无理 2021年9月9日
暂无贡献等级
落雨适合睡觉 2021年8月10日
暂无贡献等级
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友