废话不说,直接上代码
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+图片工具类 ,里面含有poi jar包,只调用接口即可直接保存Excel。使用的时候需先把数据封装,具体包装需根据实际导出数据进行处理。文件demo中只提供包装格式。
String outputFile = "D:\\excel\\excel.xlsx"; OutputStream outputStream = new FileOutputStream(outputFile); UtilExcel utilExcel = new UtilExcel(); String titles = "所属区域,所属车间,当前处理人,描述...
通过这个“java的poi生成excel图表demo”,我们可以学习如何利用POI创建动态的、数据驱动的Excel曲线图,进一步提升数据的可视性和理解性。这个压缩包中的“EexcelChart”可能是示例代码、测试数据或生成的Excel文件...
本篇将深入探讨"Excel POI 工具类",这个工具类旨在简化日常的Excel操作,提升开发效率。 Apache POI 提供了HSSF(Horizontally Stored Sheets Format)和XSSF(XML Spreadsheet Format)两个主要的API,分别用于...
标题 "POI 生成EXCEL2007【含例子】" 涉及到的知识点主要集中在Apache POI库的使用上,这是一个强大的Java API,用于读取、写入和修改Microsoft Office格式的文件,特别是Excel文件。在这个场景中,重点是创建和操作...
在这个场景中,"使用poi生成Excel所需要的jar包"指的是利用Apache POI库来生成Excel文件。POI-3.9.jar是Apache POI项目的一个版本,包含了所有必要的类和方法,让我们可以处理Excel的XLS和XLSX格式。 首先,Apache ...
Apache POI 是一个开源项目...以上是Apache POI生成Excel表格的基本知识点和操作步骤。通过这些示例,你可以理解如何在Java应用中利用POI进行Excel文件的创建、读取和修改,以及如何结合数据库操作实现数据的导入导出。
在Java开发中,Apache POI库是一个非常实用的工具,用于读取和写入Microsoft Office格式的文件,尤其是Excel(.xlsx和.xls)文件。本教程将深入讲解如何使用POI来动态地在Excel中创建各种图表,包括柱状图、组合图、...
在这个场景中,"Poi导出Excel工具类"是一个已经封装好的Java类,设计用于高效地导出大量数据到Excel文件中,并且支持多sheet页的布局。这个工具类简化了开发过程,使得开发者无需关心底层细节,只需调用预定义的方法...
在标题“android中poi生成word文档和excel文档”中提到的使用POI库生成Word和Excel文档,主要涉及到以下几个关键知识点: 1. **Apache POI 概述**:Apache POI 是一个开源项目,提供了一套API,用于读写Microsoft ...
"基于POI的Excel多Sheet页导出导入工具类"是一个实用的Java类库,专为处理Excel文件中的多个工作表(Sheet)而设计,提供了一种高效且灵活的方式来操作Excel数据。 该工具类的核心功能包括: 1. **多Sheet页操作**...
以下是对POI Excel工具类的详细说明: 1. **基本概念** - **Apache POI**: POI是Apache软件基金会的项目,它提供了Java API来处理Microsoft的OLE2复合文档格式,包括Excel、Word、PowerPoint等。 - **HSSF...
标题中的“使用POI生成EXCEL”指的是使用Apache POI库来创建Microsoft Excel文件的过程。Apache POI是一个开源项目,提供了Java API,可以用来读写Microsoft Office格式的文件,包括Excel(.xls和.xlsx格式)。这个...
我们也使用 ExcelExportUtil 工具类来将数据导出到 Excel 文件中。 这个例子展示了如何使用 SpringMVC 框架和 POI 库来生成 Excel 文件,并将其导出。这是一个非常有用的技术点,广泛应用于商业系统和数据分析等...
本示例涉及的“java生成excel工具类和demo”是关于如何在Java环境中使用Apache POI库来创建和导出Excel文件的一个实践案例。Apache POI是一个流行的开源库,它允许开发者读写Microsoft Office格式的文件,包括Excel...
在本主题中,我们将深入探讨如何使用POI库来生成Excel文件并进行下载,同时关注设置字体大小这一细节。 首先,我们需要在项目中引入Apache POI库。如果你使用Maven,可以在pom.xml文件中添加以下依赖: ```xml ...
总结一下,Apache POI提供了一套强大的工具来处理Excel文件,使得在Java应用程序中生成Excel报表变得简单。在这个例子中,我们学习了如何创建一个新的工作簿,添加工作表,设置表头,插入数据行,以及最终保存到文件...
- `Excel.java`: 这可能是包含实际操作Excel文件的工具类。可能的方法包括创建工作簿,添加工作表,设置单元格值,读取单元格数据等。 - `User.java`: 可能是定义了一个用户对象,例如,用于存储要在Excel文件中...
在使用Apache POI生成Excel表时,首先你需要创建一个`Workbook`对象,这代表Excel的工作簿。然后,可以在这个工作簿中添加`Sheet`,对应Excel中的工作表。每个工作表可以添加多个`Row`,行里面再包含`Cell`,即...
2. **读取模板**: 使用POI的XSSFWorkbook类打开模板文件,这将返回一个Workbook对象,代表整个Excel文件。然后,通过工作簿获取对应的Sheet对象,这对应Excel中的工作表。 ```java FileInputStream fis = new ...