Java POI导出到Excel

第一次利用POI导出到Excel,网上看了一些方法,但很多太过于复杂,让人一下难以看懂,因此在这贴上比较简单易看懂的方法,方便以后使用。
util类:

package com.nian.energy.worksheet.util;

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.text.SimpleDateFormat;
import java.util.Collection;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
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;

/**
 * 功能: [POI实现把数据导出到Excel]
 */
public class ExportExcelUtil {
	/**
     * 功能: 导出为Excel工作簿
     * 参数: sheetName[工作簿中的一张工作表的名称]
     * 参数: headers[表格每一列的列名]
     * 参数: dataSet[要导出的数据源]
     * 参数: resultUrl[导出的excel文件地址]
     */
    public static void exportExcel(String sheetName,String[] headers,List<List<String>> dataList,String resultUrl) {
    	 // 声明一个工作薄
        HSSFWorkbook workbook = new HSSFWorkbook();

        // 生成一个工作表
        HSSFSheet sheet = workbook.createSheet(sheetName);
        // 设置工作表默认列宽度为20个字节
        sheet.setDefaultColumnWidth(20);
        // 创建[标题]样式
        HSSFCellStyle titleStyle = workbook.createCellStyle();
        // 设置[标题]样式
        titleStyle.setFillForegroundColor(HSSFColor.LIGHT_BLUE.index);
        titleStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
        titleStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN);
        titleStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);
        titleStyle.setBorderRight(HSSFCellStyle.BORDER_THIN);
        titleStyle.setBorderTop(HSSFCellStyle.BORDER_THIN);
        titleStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
        //创建[标题]字体
        HSSFFont titleFont = workbook.createFont();
        //设置[标题]字体
        titleFont.setColor(HSSFColor.WHITE.index);
        titleFont.setFontHeightInPoints((short) 22);
        titleFont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
        // 把[标题字体]应用到[标题样式]
        titleStyle.setFont(titleFont);

        // 创建[列首]样式
        HSSFCellStyle headersStyle = workbook.createCellStyle();
        // 设置[列首]样式
        headersStyle.setFillForegroundColor(HSSFColor.LIME.index);
        headersStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
        headersStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
        //创建[列首]字体
        HSSFFont headersFont = workbook.createFont();
        //设置[列首]字体
        headersFont.setColor(HSSFColor.BLACK.index);
        headersFont.setFontHeightInPoints((short) 12);
        headersFont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
        // 把[列首字体]应用到[列首样式]
        headersStyle.setFont(headersFont);

        // 创建[表中数据]样式
        HSSFCellStyle dataSetStyle = workbook.createCellStyle();
        // 设置[表中数据]样式
        dataSetStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER); 
        // 创建[表中数据]字体
        HSSFFont dataSetFont = workbook.createFont();
        // 设置[表中数据]字体
        dataSetFont.setBoldweight(HSSFFont.BOLDWEIGHT_NORMAL);
        dataSetFont.setColor(HSSFColor.BLACK.index);
        // 把[表中数据字体]应用到[表中数据样式]
        dataSetStyle.setFont(dataSetFont);

        // 创建列首-增加样式-赋值
        HSSFRow row = sheet.createRow(0);
        for (int i = 0; i < headers.length; i++) {
            @SuppressWarnings("deprecation")
            HSSFCell cell = row.createCell(i);
            cell.setCellStyle(headersStyle);
            HSSFRichTextString text = new HSSFRichTextString(headers[i]);
            cell.setCellValue(text);
        }

        // 创建表中数据行-增加样式-赋值
        int index = 0;
        for(List<String> l : dataList){
        	index++;
            row = sheet.createRow(index); 
        	for(int i = 0;i < l.size(); i++){
        		 HSSFCell cell = row.createCell(i);
                 cell.setCellStyle(dataSetStyle);
                 cell.setCellValue(l.get(i));
        	}
        }
        
        OutputStream out=null;
        try {
            out = new FileOutputStream(resultUrl);
            workbook.write(out);
        } catch (IOException e) {
            e.printStackTrace();
        }finally{
            try {
                out.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

service层:

	public void exportDevice() {
		String[] header={"站点名","设备Id","设备名称","设备厂家","设备型号"};
		List<List<String>> dataList = new ArrayList<List<String>>();
		Map<String, Object> queryMap = new HashMap<String, Object>();
		List<Device > list=deviceDao.getAllDeviceList();
		List<String> data = new ArrayList<String>();
		for (Device device : list) {
			data=new ArrayList<String>();
			data.add(device.getStation().getName());
			data.add(device.getDeviceId());
			data.add(device.getName());
			data.add(device.getManufactor());
			data.add(device.getNodel());
			dataList.add(data);
		}
		ExportExcelUtil.exportExcel("基站设备信息", header, dataList, "F:\\基站设备信息.xls");

猜你喜欢

转载自blog.csdn.net/small_emotion/article/details/83903428
今日推荐