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导出工具类,一种无样式优化导出,一种自适应cell宽度导出
java使用POI导出 Excel+图片工具类 ,里面含有poi jar包,只调用接口即可直接保存Excel。使用的时候需先把数据封装,具体包装需根据实际导出数据进行处理。文件demo中只提供包装格式。
概述:Java poi导入导出EXCEL工具类(兼容各版本) 一、功能说明 允许同时导入或导出多个sheet,同一sheet可同时存在多个数据块,按数据块划分处理数据。 二、配置文件示例及详细说明 1、导入xml配置示例如下(见...
java的poi的导入工具类,只需要传入两个arrayList,一个是execl的标题,一个是ececl的数据,就可以直接导出到execl里面,支持最新的execl,全新封装的,让每一个人都会使用poi导出execl!
本篇将深入探讨"Excel POI 工具类",这个工具类旨在简化日常的Excel操作,提升开发效率。 Apache POI 提供了HSSF(Horizontally Stored Sheets Format)和XSSF(XML Spreadsheet Format)两个主要的API,分别用于...
为了方便开发者将程序中的数据快速导出到Excel文件,自定义Excel导出工具类是常见的做法。本篇文章将深入探讨如何利用Java的Apache POI库创建一个能够处理`List<Object>`数据的Excel工具类。 Apache POI是一个流行...
在这个场景中,我们关注的是如何使用POI来创建一个功能丰富的Excel导出工具类,它能够自动设置标题、列名、文件名,并且支持插入图片以及合并单元格。下面将详细介绍这些功能的实现。 首先,要创建一个Excel工作簿...
总之,这个 poi 多 sheet 导出工具类和实例是处理大量数据导出的有效方法,结合合理的数据分组、公共数据获取类以及优化策略,可以高效地生成多个 sheet 或多个 Excel 文件,满足大规模数据的导出需求。
5. 使用 Java POI 实现 Excel 导入导出工具类 在上面的示例中,我们已经实现了 Excel 导入和导出功能。下面是一个实现了 Excel 导入导出工具类的示例: ```java import org.apache.poi.hssf.usermodel.HSSFWorkbook...
String outputFile = "D:\\excel\\excel.xlsx"; OutputStream outputStream = new FileOutputStream(outputFile); UtilExcel utilExcel = new UtilExcel(); String titles = "所属区域,所属车间,当前处理人,描述...
poi导出excel工具类,亲测可用
食用指南 https://blog.csdn.net/weixin_44067399/article/details/107974673 本工具为基于POI封装的一个工具类,旨在提高开发效率,供学习交流用 使用本工具的前提是安装了POI
这个“excel poi工具类”是利用Apache POI库来实现对Excel文件进行导入、导出、合并单元格以及处理计算公式的功能。下面我们将深入探讨这些知识点。 **1. Apache POI库介绍** Apache POI是一个开源项目,它为Java...
这个工具类可能会接收数据集(例如List<List<Object>>),遍历数据并生成对应的Excel表格。 在实际应用中,我们还可能涉及到更复杂的功能,比如合并单元格、插入图表、设置数据格式(日期、货币等)、读取Excel模板...
下面是一个简单的POI Excel导出工具类的示例: ```java public class PoiExcelUtil { public static Workbook createWorkbook() { // 根据需求选择HSSFWorkbook或XSSFWorkbook return new XSSFWorkbook(); } ...
在这个场景中,"Poi导出Excel工具类"是一个已经封装好的Java类,设计用于高效地导出大量数据到Excel文件中,并且支持多sheet页的布局。这个工具类简化了开发过程,使得开发者无需关心底层细节,只需调用预定义的方法...
"基于POI的Excel多Sheet页导出导入工具类"是一个实用的Java类库,专为处理Excel文件中的多个工作表(Sheet)而设计,提供了一种高效且灵活的方式来操作Excel数据。 该工具类的核心功能包括: 1. **多Sheet页操作**...
在IT行业中,Excel导出工具类是一个非常实用的组件,特别是在数据分析、报表生成以及数据交换等领域。这个工具类主要是为了简化编程过程中处理Excel文件的工作,尤其是考虑到数据类型的多样性,使得开发者能够快速、...
**使用Apache POI进行Excel导出** 1. **创建工作簿和工作表:** 首先创建`Workbook`对象,然后使用`createSheet()`方法创建工作表。 2. **写入单元格:** 创建`Row`对象并使用`createCell()`方法创建单元格,然后...