`
123629996
  • 浏览: 295200 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

POI生成Excel工具类

 
阅读更多

废话不说,直接上代码

package com.sgcc.ahepc.util;

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

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;
import org.apache.poi.hssf.util.HSSFColor;


public class ExcelExportUtil {
	/**
	 * 支持多sheet生成
	 * @param list 展示列表
	 * @param titles 头信息
	 * @param columns 列字段
	 * @param sheetNames sheet名称
	 * @return
	 */
	public static HSSFWorkbook getBook(List<List<Map<String, Object>>> list,
String[] titles, String[] columns, List<String> sheetNames,int start) {
		
		// 创建新的Excel 工作簿
		 HSSFWorkbook workbook = new HSSFWorkbook();
		 //字体
		 HSSFFont font = workbook.createFont();
		 font.setFontName("仿宋");
		 font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);//粗体显示
		 font.setFontHeightInPoints((short) 12);
		 
		 HSSFFont cellFont = workbook.createFont();
		 cellFont.setFontName("仿宋");
		 cellFont.setFontHeightInPoints((short) 12);
		 
		 HSSFCellStyle titleStyle = workbook.createCellStyle();
		 HSSFCellStyle cellStyle = workbook.createCellStyle();
		 //设置颜色
		 titleStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
		 titleStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
		 titleStyle.setFillForegroundColor(HSSFColor.SKY_BLUE.index);//前景颜色
		 titleStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);//填充方式,前色填充
		 //边框填充
		 titleStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN); //下边框
		 titleStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);//左边框
		 titleStyle.setBorderTop(HSSFCellStyle.BORDER_THIN);//上边框
		 titleStyle.setBorderRight(HSSFCellStyle.BORDER_THIN);//右边框
		 titleStyle.setFont(font);
		 titleStyle.setWrapText(false);
		 
		 cellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
		 cellStyle.setAlignment(HSSFCellStyle.ALIGN_LEFT);
		 cellStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN); //下边框
		 cellStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);//左边框
		 cellStyle.setBorderTop(HSSFCellStyle.BORDER_THIN);//上边框
		 cellStyle.setBorderRight(HSSFCellStyle.BORDER_THIN);//右边框
		 cellStyle.setFont(cellFont);
		 cellStyle.setWrapText(false);
		// 根据sheet多少决定创建多少sheet
		
		for (int n = 0; n < sheetNames.size(); n++) {
			 HSSFSheet sheet = null;
			if (sheetNames != null && sheetNames.size()>0) {
				sheet = workbook.createSheet(sheetNames.get(n));
			} else {
				sheet = workbook.createSheet();
			}
			
			// 在索引0的位置创建行(最顶端的行)
			HSSFRow titleRow = sheet.createRow(start);
			titleRow.setHeightInPoints(18);
			//titleRow.setRowStyle(style);
			// 在索引0的位置创建单元格(左上端)
			for(int i=0;i<titles.length;i++){
				HSSFCell titleCell = titleRow.createCell(i);
				titleCell.setCellStyle(titleStyle);
				titleCell.setCellValue(titles[i]);
			}
			//填充数据,有多少记录就需要创建多少行记录
				List<Map<String,Object>> dataList = list.get(n);
				for(int l=0;l<dataList.size();l++){
					Map<String,Object> map = dataList.get(l);
					HSSFRow dRow = sheet.createRow(start+l+1);
					//根据标题的多少决定创建多少列,并根据列的名称找到对应的数据
					for(int k=0;k<columns.length;k++){
						HSSFCell dCell = dRow.createCell(k);
						dCell.setCellStyle(cellStyle);
						String val = String.
valueOf(map.get(columns[k].toUpperCase()));
						if(val == null || val.equals("null")){
							val = "";
						}
						dCell.setCellValue(val);
					}
				}

			for(int m=0;m<titles.length;m++){
				sheet.autoSizeColumn(m);
			//sheet.autoSizeColumn(m, true);
			//sheet.setColumnWidth(m, titles[m].getBytes().length*2*256);
			}
			
		}
		
		
		return workbook;
	}

}

 说有一点,这个类支持多sheet输出,采用键值对的关系运作。titiles是中文的标题,colums是键值,也就是list中map的key,所以在实用时要传入list,并且list中存放map。这个结果集实际上在使用 mybatis时实际上是很方便的。这里我用的就是mybatis,虽然有一定的局限性,但是是一种思路。利用java的反射实际上也很容易将实体类转换为这样的数据。

分享到:
评论

相关推荐

    java使用POI导出 Excel工具类

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

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

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

    java的poi生成excel图表demo

    通过这个“java的poi生成excel图表demo”,我们可以学习如何利用POI创建动态的、数据驱动的Excel曲线图,进一步提升数据的可视性和理解性。这个压缩包中的“EexcelChart”可能是示例代码、测试数据或生成的Excel文件...

    Excel POI 工具类

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

    POI 生成EXCEL2007【含例子】

    标题 "POI 生成EXCEL2007【含例子】" 涉及到的知识点主要集中在Apache POI库的使用上,这是一个强大的Java API,用于读取、写入和修改Microsoft Office格式的文件,特别是Excel文件。在这个场景中,重点是创建和操作...

    使用poi生成Excel所需要的jar包

    在这个场景中,"使用poi生成Excel所需要的jar包"指的是利用Apache POI库来生成Excel文件。POI-3.9.jar是Apache POI项目的一个版本,包含了所有必要的类和方法,让我们可以处理Excel的XLS和XLSX格式。 首先,Apache ...

    poi生成excel表格

    Apache POI 是一个开源项目...以上是Apache POI生成Excel表格的基本知识点和操作步骤。通过这些示例,你可以理解如何在Java应用中利用POI进行Excel文件的创建、读取和修改,以及如何结合数据库操作实现数据的导入导出。

    使用POI在Excel中动态生成图表工具类(支持柱状、组合、环状图、折线图、等常用图)

    在Java开发中,Apache POI库是一个非常实用的工具,用于读取和写入Microsoft Office格式的文件,尤其是Excel(.xlsx和.xls)文件。本教程将深入讲解如何使用POI来动态地在Excel中创建各种图表,包括柱状图、组合图、...

    Poi导出Excel工具类

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

    android中poi生成word文档和excel文档

    在标题“android中poi生成word文档和excel文档”中提到的使用POI库生成Word和Excel文档,主要涉及到以下几个关键知识点: 1. **Apache POI 概述**:Apache POI 是一个开源项目,提供了一套API,用于读写Microsoft ...

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

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

    POI Excel 工具类

    以下是对POI Excel工具类的详细说明: 1. **基本概念** - **Apache POI**: POI是Apache软件基金会的项目,它提供了Java API来处理Microsoft的OLE2复合文档格式,包括Excel、Word、PowerPoint等。 - **HSSF...

    使用POI生成EXCEL

    标题中的“使用POI生成EXCEL”指的是使用Apache POI库来创建Microsoft Excel文件的过程。Apache POI是一个开源项目,提供了Java API,可以用来读写Microsoft Office格式的文件,包括Excel(.xls和.xlsx格式)。这个...

    SpringMVC POI Excel 生成导出

    我们也使用 ExcelExportUtil 工具类来将数据导出到 Excel 文件中。 这个例子展示了如何使用 SpringMVC 框架和 POI 库来生成 Excel 文件,并将其导出。这是一个非常有用的技术点,广泛应用于商业系统和数据分析等...

    java生成excel工具类和demo

    本示例涉及的“java生成excel工具类和demo”是关于如何在Java环境中使用Apache POI库来创建和导出Excel文件的一个实践案例。Apache POI是一个流行的开源库,它允许开发者读写Microsoft Office格式的文件,包括Excel...

    JAVA用POI生成Excel并下载

    在本主题中,我们将深入探讨如何使用POI库来生成Excel文件并进行下载,同时关注设置字体大小这一细节。 首先,我们需要在项目中引入Apache POI库。如果你使用Maven,可以在pom.xml文件中添加以下依赖: ```xml ...

    poi 导出EXCEL 例子

    总结一下,Apache POI提供了一套强大的工具来处理Excel文件,使得在Java应用程序中生成Excel报表变得简单。在这个例子中,我们学习了如何创建一个新的工作簿,添加工作表,设置表头,插入数据行,以及最终保存到文件...

    使用poi操作Excel2007工具类及示例(包括完整Jar包)

    - `Excel.java`: 这可能是包含实际操作Excel文件的工具类。可能的方法包括创建工作簿,添加工作表,设置单元格值,读取单元格数据等。 - `User.java`: 可能是定义了一个用户对象,例如,用于存储要在Excel文件中...

    poi-3.0.2 生成excel表工具

    在使用Apache POI生成Excel表时,首先你需要创建一个`Workbook`对象,这代表Excel的工作簿。然后,可以在这个工作簿中添加`Sheet`,对应Excel中的工作表。每个工作表可以添加多个`Row`,行里面再包含`Cell`,即...

    POI使用Excel模板文件循环输出行并导出Excel

    2. **读取模板**: 使用POI的XSSFWorkbook类打开模板文件,这将返回一个Workbook对象,代表整个Excel文件。然后,通过工作簿获取对应的Sheet对象,这对应Excel中的工作表。 ```java FileInputStream fis = new ...

Global site tag (gtag.js) - Google Analytics