导出数据到EXCEL文档



思路:创建好excel文件后,通过循环来创建不同的工作表;在创建某具体的工作表时,通过循环来创建表头、

             表体;在创建表头是,先创建行,再循环创建单元格;在创建表体时,通过循环一行行的创建。

 

实例:

 

package com.ga.service;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
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.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;

/**
 * 
 * @author ts
 * 导出多張表到同一Excel文件的不同Sheet中
 */
public class CreateExcel{
	// private HSSFWorkbook hssworkbook = null;

	public DataCountExcelService2() {
		// 创建工作薄
		// hssworkbook = new HSSFWorkbook();
	}

	/**
	 * 创建excel文件
	 * 
	 * @param path导出路径
	 * @param sheetName工作表名称数组
	 * @param titles表格标题
	 * @param rawList内容数据
	 * @throws IOException
	 */
	public void createExecl(String path, String[] sheetName, List<List<String>> titles,
			List<List<String[]>> rawList) throws IOException {
		FileOutputStream fout = null;
		if (!path.endsWith(".xls")) {
			path = path + ".xls";
		}
		try {
			fout = new FileOutputStream(path);
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}
		//创建Excel工作书册,对应一个excel文档
		HSSFWorkbook hssworkbook = new HSSFWorkbook();
		
		
		//创建(多个)sheet,对应excel文档中的(多个)工作表
		for(int i=0; i<sheetName.length; i++){
			HSSFSheet hsshsheet = hssworkbook.createSheet();
			if(rawList.get(i)!=null){
				String[] list = rawList.get(i).get(0);
				if(list!=null){
					for (int j = 0; j < list.length; j++) {
						//设置每列宽度
						hsshsheet.setColumnWidth(j, 8000);
					}
				}
			}
			// 设置工作表的名称(工作表在工作薄中的位置,工作表的名称)
			hssworkbook.setSheetName(i, sheetName[i]);
			
			//设置表格标题
			this.setTitle(hssworkbook, hsshsheet, titles.get(i));
			try {
				//设置表体部分
				this.setBody(hssworkbook, hsshsheet, rawList.get(i));
			} catch (Exception e) {
				e.printStackTrace();
			}	
		}
		//导出excel文件
		hssworkbook.write(fout);
		//刷新此输出流并强制写出所有缓冲的输出字节(强制将缓冲区所有的数据输出!)
		fout.flush();
		//关闭文件
		fout.close();
	}

	/**
	 * 设置表格的标题栏
	 * 
	 * @param hssfrow
	 */
	private void setTitle(HSSFWorkbook hssworkbook, HSSFSheet hsshsheet,
			List<String> titles) {
		//创建工作表中的一行(作为表头用)
		HSSFRow hssfrow = hsshsheet.createRow(0);
		//设置行高单位是px
		hssfrow.setHeight((short) 500);
		//设置单元格样式
		HSSFCellStyle cellStyle = hssworkbook.createCellStyle();
		// 设置单元格居中
		cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
		// 设置单元格垂直居中
		cellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
		// 设置单元格自动换行
		cellStyle.setWrapText(true);
		//设置字体
		HSSFFont font = hssworkbook.createFont();
		font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
		font.setFontName("宋体");
		font.setFontHeight((short) 200);
		cellStyle.setFont(font);
		
		//将每个属性分别写入创建好的单元格中
			int size = titles.size();
			for (int j = 0; j < size; j++) {
				//在建好的行中创建单元格
				HSSFCell hsscell = hssfrow.createCell(j);
				//添加样式
				hsscell.setCellStyle(cellStyle);
				//添加表头属性名
				hsscell.setCellValue(titles.get(j));
			}	
		}	

	/**
	 * 设置表格的主体内容
	 * 
	 * @param hsshsheet
	 * @throws Exception
	 */
	private void setBody(HSSFWorkbook hssworkbook, HSSFSheet hsshsheet,
			List<String[]> rawList) throws Exception {
		// 行list,行list
		if (rawList == null) {
			return;
		}

		HSSFCellStyle cellStyle = hssworkbook.createCellStyle();
		// 设置单元格居中
		cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
		// 设置单元格垂直居中
		cellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
		// 设置单元格自动换行
		cellStyle.setWrapText(true);
		// cellStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN);
		// cellStyle.setBottomBorderColor(HSSFColor.BLACK.index);
		HSSFFont font = hssworkbook.createFont();
		font.setBoldweight(HSSFFont.BOLDWEIGHT_NORMAL);
		font.setFontName("宋体");
		font.setFontHeight((short) 200);
		cellStyle.setFont(font);
			int i = 1;
			for (int j=0; j<rawList.size(); j++){
				String[] columnList = (String[])rawList.get(j);
				HSSFRow hssfrow = hsshsheet.createRow(i++);
				hssfrow.setHeight((short) 400);
				this.setRow(hssfrow, columnList, cellStyle);
			}
		}

	/**
	 * 设置表格行的信息
	 * 
	 * @param hssfrow
	 * @param testCase
	 * @param cellStyle
	 */
	private void setRow(HSSFRow hssfrow, String[] columnList,
			HSSFCellStyle cellStyle) {
		if (columnList == null) {
			return;
		}

		int i = 0;
		HSSFCell hsscell = null;
		for (int j=0; j<columnList.length; j++) {
			hsscell = hssfrow.createCell(i++);
			hsscell.setCellStyle(cellStyle);
			hsscell.setCellValue(columnList[j]);
		}
	}
	//测试
	public static void main(String[] args) throws IOException {
		DataCountExcelService2 execl = new DataCountExcelService2();
		
		String[] str = new String[2];
		str[0]="123";
		str[1]="234";
		
		
		List<List<String>> titles = new ArrayList<List<String>>();
		
		List<String> titles1 = new ArrayList<String>();
		titles1.add("1的");
		titles1.add("2阿尔法");
		titles1.add("3阿尔法额");
		titles1.add("4的发");
		titles1.add("5啊");
		
		List<String> titles2 = new ArrayList<String>();
		titles2.add("6的");
		titles2.add("7阿尔法");
		titles2.add("8阿尔法额");
		titles2.add("9的发");
		titles2.add("10啊");
		
		titles.add(titles1);
		titles.add(titles2);
		
		
		List<List<String[]>> rawList = new ArrayList<List<String[]>>();
		
		List<String[]> bodys = new ArrayList<String[]>();
		
		String[] str1 = new String[3];
			str1[0]="wqe";
			str1[1]="wqe";
			str1[2]="wqe";
		
		String[] str2 = new String[3];
			str2[0]="sdf";
			str2[1]="sdf";
			str2[2]="sdf";
			
		String[] str3 = new String[3];
			str3[0]="jkh";
			str3[1]="jkh";
			str3[2]="jkh";
		
		bodys.add(str1);
		bodys.add(str2);
		bodys.add(str3);

		rawList.add(bodys);

		List<String[]> bodys2 = new ArrayList<String[]>();
		
		String[] str4 = new String[3];
		str4[0]="lkj";
		str4[1]="lkj";
		str4[2]="lkj";
	
		String[] str5 = new String[3];
		str5[0]="hgf";
		str5[1]="hfg";
		str5[2]="hfg";
		
		String[] str6 = new String[3];
		str6[0]="nbb";
		str6[1]="nbv";
		str6[2]="vbv";
	
	bodys2.add(str4);
	bodys2.add(str5);
	bodys2.add(str6);
		
	rawList.add(bodys2);
		
		execl.createExecl("d:/ex.xls", str, titles, rawList);
	}
}

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值