`

POI Excel 导出工具类

阅读更多

 

 

   POI Excel 导出工具类

  

package com.hengyu.ticket.util;

import java.util.List;
import java.util.Map;

import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFCellStyle;
import org.apache.poi.xssf.usermodel.XSSFFont;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;


/**
 * excel处理
 * @author LGF
 * 2015-12-21
 */
public class ExcelHanlder {
	
	//默认高度
	private static short DEFAULT_ROW_HEIGHT = 400;
	//默认宽度
	private static int DEFAULT_CELL_WIDTH = 3000;

	
	/**
	 * 
	 * @param book 工作簿对象,【可选】
	 * @param hanlder 自定义类型处理【可选】
	 * @param titles 标题
	 * @param columns 列名(Map类型处理,自定义可选)
	 * @param columnsWidth 宽度
	 * @param height 行高
	 * @param sheetTitle 表标题
	 * @param datas 数据
	 * @return
	 */
	@SuppressWarnings("all")
	public static XSSFWorkbook exportExcel(XSSFWorkbook book,ExcelTypeHanlder hanlder,String[] titles,String[] columns
			,Integer[] columnsWidth,Short height,String sheetTitle,List datas){
		
		if(book==null){
			book = new XSSFWorkbook();
		}
		
		int size = DEFAULT_CELL_WIDTH;
		
		//列大小
		if(columnsWidth!=null&&columnsWidth.length==1){
			size = columnsWidth[0];
		}
		if(height==null){
			height = DEFAULT_ROW_HEIGHT;
		}
		XSSFSheet sheet = book.createSheet(sheetTitle);
		int rowindex = 0;
		XSSFRow firstrow = sheet.createRow(rowindex);
		rowindex++;
		sheet.setDefaultColumnWidth(size);
		firstrow.setHeight(height);
		
		XSSFFont font = book.createFont();
		font.setBold(true);
		XSSFCellStyle cellstyle = book.createCellStyle();
		cellstyle.setFont(font);
		cellstyle.setVerticalAlignment(XSSFCellStyle.VERTICAL_CENTER);
		
		//标题
		if(titles!=null){
			int index = 0;
			for (String title : titles) {
				XSSFCell cell = firstrow.createCell(index);
				cell.setCellStyle(cellstyle);
				cell.setCellValue(title);
				//列宽度设置
				if(columnsWidth==null||columnsWidth.length==0||columnsWidth.length==1){
					sheet.setColumnWidth(cell.getColumnIndex(), size);
				}else{
					if((columnsWidth.length-1)>=index){
						sheet.setColumnWidth(cell.getColumnIndex(), columnsWidth[index]==null?size:columnsWidth[index]);
					}else{
						sheet.setColumnWidth(cell.getColumnIndex(), size);
					}
				}
				index++;
			}
		}
		if(datas==null){
			return book;
		}
		
		//写入数据
		for (Object data : datas) {
			
			//map 类型处理
			if(data instanceof Map){
				Map<String,Object> map = (Map<String, Object>) data;
				XSSFRow row = sheet.createRow(rowindex);
				int i = 0;
				for (String column : columns) {
					XSSFCell cell = row.createCell(i);
					Object val = map.get(column);
					if(hanlder!=null&&val==null){
						Object temp = hanlder.dataNullHander(column,map);
						cell.setCellValue(temp!=null?temp.toString():"");
					}else{
						cell.setCellValue(val!=null?val.toString():"");
					}
					i++;
				}
				row.setHeight(DEFAULT_ROW_HEIGHT);
				rowindex++;
			}else{
				//其他处理
				if(hanlder!=null){
					Object obj = data;
					XSSFRow row = sheet.createRow(rowindex);
					hanlder.typeHanlder(data, row);
					rowindex++;
				}
			}
		}
		return book;
	} 
	
	
	/**
	 * 
	 * @param book 工作簿对象,【可选】
	 * @param titles 标题
	 * @param columns 列名(Map类型处理,自定义可选)
	 * @param sheetTitle 表标题
	 * @param datas 数据
	 * @return
	 */
	public static XSSFWorkbook exportExcel(XSSFWorkbook book,String[] titles,String[] columns,String sheetTitle,List<Map<String,String>> datas){
		return exportExcel(book, null, titles, columns,null,null, sheetTitle, datas);
	}
	
	/**
	 * @param titles 标题
	 * @param columns 列名(Map类型处理,自定义可选)
	 * @param sheetTitle 表标题
	 * @param datas 数据
	 * @return
	 */
	@SuppressWarnings("all")
	public static XSSFWorkbook exportExcel(String[] titles,String[] columns,String sheetTitle,List<Map<String,String>> datas,ExcelTypeHanlder hanlder){
		return exportExcel(null, hanlder, titles, columns,null,null, sheetTitle, datas);
	}
	
	public static XSSFWorkbook exportExcel(String[] titles,String[] columns,String sheetTitle,List<Map<String,String>> datas){
		return exportExcel(null, null, titles, columns,null,null, sheetTitle, datas);
	}
	
	//自定义处理对象回调
	public static abstract class ExcelTypeHanlder<T>{
		//类型处理
		public void typeHanlder(T data,XSSFRow row){
			
		}
		
		//空数据处理
		public Object dataNullHander(String column,T obj){
			return null;
		}
	}
	
	
}

 

分享到:
评论

相关推荐

    poi excel导出工具类

    基于poi开发的excel导出工具类,一种无样式优化导出,一种自适应cell宽度导出

    java使用POI导出 Excel工具类

    java使用POI导出 Excel+图片工具类 ,里面含有poi jar包,只调用接口即可直接保存Excel。使用的时候需先把数据封装,具体包装需根据实际导出数据进行处理。文件demo中只提供包装格式。

    Java poi导入导出EXCEL工具类(兼容各版本)

    概述:Java poi导入导出EXCEL工具类(兼容各版本) 一、功能说明 允许同时导入或导出多个sheet,同一sheet可同时存在多个数据块,按数据块划分处理数据。 二、配置文件示例及详细说明 1、导入xml配置示例如下(见...

    java 使用poi导出excel工具类

    java的poi的导入工具类,只需要传入两个arrayList,一个是execl的标题,一个是ececl的数据,就可以直接导出到execl里面,支持最新的execl,全新封装的,让每一个人都会使用poi导出execl!

    Excel POI 工具类

    本篇将深入探讨"Excel POI 工具类",这个工具类旨在简化日常的Excel操作,提升开发效率。 Apache POI 提供了HSSF(Horizontally Stored Sheets Format)和XSSF(XML Spreadsheet Format)两个主要的API,分别用于...

    POI导出Excel工具类,自动设置标题 列名 文件名,可插入图片,合并单元格

    在这个场景中,我们关注的是如何使用POI来创建一个功能丰富的Excel导出工具类,它能够自动设置标题、列名、文件名,并且支持插入图片以及合并单元格。下面将详细介绍这些功能的实现。 首先,要创建一个Excel工作簿...

    Excel导出工具类

    为了方便开发者将程序中的数据快速导出到Excel文件,自定义Excel导出工具类是常见的做法。本篇文章将深入探讨如何利用Java的Apache POI库创建一个能够处理`List&lt;Object&gt;`数据的Excel工具类。 Apache POI是一个流行...

    java_poi实现excel导入导出

    5. 使用 Java POI 实现 Excel 导入导出工具类 在上面的示例中,我们已经实现了 Excel 导入和导出功能。下面是一个实现了 Excel 导入导出工具类的示例: ```java import org.apache.poi.hssf.usermodel.HSSFWorkbook...

    poi多sheet页导出工具类和实例 包含多个excel导出

    总之,这个 poi 多 sheet 导出工具类和实例是处理大量数据导出的有效方法,结合合理的数据分组、公共数据获取类以及优化策略,可以高效地生成多个 sheet 或多个 Excel 文件,满足大规模数据的导出需求。

    java poi导出excel含工具类以及示例

    String outputFile = "D:\\excel\\excel.xlsx"; OutputStream outputStream = new FileOutputStream(outputFile); UtilExcel utilExcel = new UtilExcel(); String titles = "所属区域,所属车间,当前处理人,描述...

    poi导出excel工具类一

    poi导出excel工具类,亲测可用

    excel poi工具类 导入 导出 合并单元格 计算公式

    这个“excel poi工具类”是利用Apache POI库来实现对Excel文件进行导入、导出、合并单元格以及处理计算公式的功能。下面我们将深入探讨这些知识点。 **1. Apache POI库介绍** Apache POI是一个开源项目,它为Java...

    基于POI导出Excel的工具类

    食用指南 https://blog.csdn.net/weixin_44067399/article/details/107974673 本工具为基于POI封装的一个工具类,旨在提高开发效率,供学习交流用 使用本工具的前提是安装了POI

    Apache Poi Excel导出

    这个工具类可能会接收数据集(例如List&lt;List&lt;Object&gt;&gt;),遍历数据并生成对应的Excel表格。 在实际应用中,我们还可能涉及到更复杂的功能,比如合并单元格、插入图表、设置数据格式(日期、货币等)、读取Excel模板...

    poi excel导出

    下面是一个简单的POI Excel导出工具类的示例: ```java public class PoiExcelUtil { public static Workbook createWorkbook() { // 根据需求选择HSSFWorkbook或XSSFWorkbook return new XSSFWorkbook(); } ...

    Poi导出Excel工具类

    在这个场景中,"Poi导出Excel工具类"是一个已经封装好的Java类,设计用于高效地导出大量数据到Excel文件中,并且支持多sheet页的布局。这个工具类简化了开发过程,使得开发者无需关心底层细节,只需调用预定义的方法...

    基于POI的Excel多Sheet页导出导入工具类

    "基于POI的Excel多Sheet页导出导入工具类"是一个实用的Java类库,专为处理Excel文件中的多个工作表(Sheet)而设计,提供了一种高效且灵活的方式来操作Excel数据。 该工具类的核心功能包括: 1. **多Sheet页操作**...

    excel导出工具类

    在IT行业中,Excel导出工具类是一个非常实用的组件,特别是在数据分析、报表生成以及数据交换等领域。这个工具类主要是为了简化编程过程中处理Excel文件的工作,尤其是考虑到数据类型的多样性,使得开发者能够快速、...

    poi导入导出Excel通用工具类 兼容xls,xlsx

    **使用Apache POI进行Excel导出** 1. **创建工作簿和工作表:** 首先创建`Workbook`对象,然后使用`createSheet()`方法创建工作表。 2. **写入单元格:** 创建`Row`对象并使用`createCell()`方法创建单元格,然后...

Global site tag (gtag.js) - Google Analytics