用POI导出Excel 模板
导出的时候,应当分为三步:
第一步,建立一个导出Excel格式的工具类,方便在后面的控制器中直接调用生成Excel格式;
第二步,用spring+mybatis的框架创建service来创建所需要导出的文件的方法(),注意要分层次来写,从controller调用service接口的方法,而service的方法实现是在serviceimpl,并且serviceImpl类中SQL方法的实现是调用Mapper接口中方法。而Mapper接口方法的实现是在映射Mapper.xml定义;
第三步,在控制层将第二步查询的数据拼装到第一步的导出文件的格式中,在页面使用按钮绑定事件导出。
注意:
1.格式尽量完整,功能齐全,拼装数据时候注意:为空字符串时候,要判断,为空就赋值空;很重要,不然会报错!!!文件名在不同的浏览器的兼容的问题。表格下的命名。
2.在命名方法和控制器时候,要遵循驼峰规则和快速知道方法功能的习惯,所以,写上注释的代码是很有必要的。建议养成这个良好的习惯。
3.开发模块时候,要注意分步来实现功能的做法,这样是最有力自己完善和完成模块的。
4.知识点和不会的,要弄懂,尤其是联合查询几个数据库,分页和按时间排序等的。细节是尤其需要注意的。
下面是曾经做过的项目的模版:
导出格式类
package com.util;
import java.text.SimpleDateFormat;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFFont;
import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.Font;
import org.apache.poi.ss.usermodel.IndexedColors;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
import com.ancun.bqbh.capture.model.BqbhProductConsume;
/**
* <p>
* ExcelExport类主要用于excel导出(POI)
*
*/
public class ExcelExport {
public static Workbook export(List<BqbhProductConsume> list) {
//格式化日期
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String[] excelHeader = { "时间", "概要", "类型","文件大小/MB","花费数额","到期时间"};
// 声明一个工作薄
//HSSFWorkbook wb = new HSSFWorkbook();
Workbook wb = new SXSSFWorkbook();
// 生成一个表格 这个是考虑50万条都可以导出的大数据表格
Sheet sheet = wb.createSheet("保全记录");
//设置表格默认列宽度
sheet.setDefaultColumnWidth(20);
// 生成一个样式
CellStyle headStyle = wb.createCellStyle();
CellStyle bodyStyle = wb.createCellStyle();
// 设置这些样式
headStyle.setFillForegroundColor(IndexedColors.YELLOW.index);// 设置背景色
headStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
bodyStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
bodyStyle.setFillForegroundColor(IndexedColors.WHITE.index);
//设置边框
headStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN);//下边框
headStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);//左边框
headStyle.setBorderRight(HSSFCellStyle.BORDER_THIN);//右边框
headStyle.setBorderTop(HSSFCellStyle.BORDER_THIN);//上边框
headStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 居中
headStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
bodyStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN);//下边框
bodyStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);//左边框
bodyStyle.setBorderRight(HSSFCellStyle.BORDER_THIN);//右边框
bodyStyle.setBorderTop(HSSFCellStyle.BORDER_THIN);//上边框
bodyStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 居中
bodyStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
// 设置字体
Font font = wb.createFont();
font.setColor(HSSFColor.BLACK.index);//字体颜色黑色
font.setFontHeightInPoints((short) 12);//设置字体大小
font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);//粗体显示
Font bodyFont = wb.createFont();
bodyFont.setColor(HSSFColor.BLACK.index);//字体颜色黑色
bodyFont.setFontHeightInPoints((short) 12);//设置字体大小
// 把字体应用到当前的样式
// bodyStyle.setFont(bodyFont);
headStyle.setFont(font);
Row row = sheet.createRow((int) 0); //设置第一行的表格名字
// 获取填充表格的第一行的数据
for (int i = 0; i < excelHeader.length; i++) {
Cell cell = row.createCell(i);
cell.setCellValue(excelHeader[i]);
cell.setCellStyle(headStyle); //设置单元格格式
// sheet.autoSizeColumn(i); //自动确定宽度
}
//循环将数据 集合list填入表格的行
Integer total=0;
for (int i = 0,j=list.size(); i < j+1; i++) {
//从第二行开始填充数据
row = sheet.createRow(i + 1);
Cell cell0=row.createCell(0);
Cell cell1=row.createCell(1);
Cell cell2=row.createCell(2);
Cell cell3=row.createCell(3);
Cell cell4=row.createCell(4);
Cell cell5=row.createCell(5);
cell0.setCellStyle(bodyStyle);
cell1.setCellStyle(bodyStyle);
cell2.setCellStyle(bodyStyle);
cell3.setCellStyle(bodyStyle);
cell4.setCellStyle(bodyStyle);
cell5.setCellStyle(bodyStyle);
if(i==j){
row.setHeight((short) 600);
cell0.setCellValue("总计");
cell4.setCellValue(total.intValue());
break;
}
BqbhProductConsume bqc = list.get(i);
total+=(null!=bqc.getSaveMount()?bqc.getSaveMount():0);
//建立时间
String getCreateDate=(null!=bqc.getGmtCreate()?sdf.format(bqc.getGmtCreate()):"");
//时间
String getSaveFinishTime=(null!=bqc.getSaveFinishTime()?sdf.format(bqc.getSaveFinishTime()):"");
cell0.setCellValue(getCreateDate);
cell1.setCellValue(bqc.getSaveDesc());
//cell2.setCellValue(bqc.getSaveType());
cell3.setCellValue(bqc.getSaveSizeString());
cell4.setCellValue(bqc.getSaveMount());
cell5.setCellValue(getSaveFinishTime);
//判断保存类型
if (bqc.getSaveType()==1) {
cell2.setCellValue("网页");
}else{
cell2.setCellValue("作品");
}
}
return wb;
}
/**
*
* @Title: processFileName
*
* @Description: ie,chrom,firfox下处理文件名显示乱码
*/
public static String processFileName(HttpServletRequest request, String fileNames) {
String codedfilename = null;
try {
String agent = request.getHeader("USER-AGENT");
if (null != agent && -1 != agent.indexOf("MSIE") || null != agent
&& -1 != agent.indexOf("Trident")) {//IE 浏览器
String name = java.net.URLEncoder.encode(fileNames, "UTF8");
codedfilename = name;
} else if (null != agent && -1 != agent.indexOf("Mozilla")) {// 火狐、谷歌等
codedfilename = new String(fileNames.getBytes("UTF-8"), "iso-8859-1");
}
} catch (Exception e) {
e.printStackTrace();
}
return codedfilename;
}
}
分享到:
相关推荐
以下是一个简化的示例,演示了如何使用POI导出Excel: ```java import org.apache.poi.ss.usermodel.*; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import java.io.FileOutputStream; import java.io....
java使用POI导出 Excel+图片工具类 ,里面含有poi jar包,只调用接口即可直接保存Excel。使用的时候需先把数据封装,具体包装需根据实际导出数据进行处理。文件demo中只提供包装格式。
在这个“POI导出Excel表格”的实例中,我们将深入探讨如何利用Apache POI进行Excel文件的导入与导出操作。 首先,我们需要在项目中集成Apache POI库。如果你使用的是Maven,可以在pom.xml文件中添加以下依赖: ```...
以上就是使用Java POI导出Excel的基本步骤。你可以根据实际需求调整代码,例如添加数据遍历、样式设置、图表生成等功能。确保正确管理资源,避免内存泄漏,特别是在服务器端处理大量数据时。记得在完成后关闭工作簿...
POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI...
poi作为导出excel常用的工具,方便快捷。对于excel指定下拉列表的列,如何生成呢?本文提供如何生成下拉列表的excel列
在本案例中,我们关注的是如何使用 Apache POI 库来导出 Excel 文件,特别是根据模板导出和简单列表导出。下面将详细介绍这个过程。 1. **Apache POI 概述** Apache POI 提供了 Java API 来读写 Microsoft Office ...
"poi导出excel需要的jar"指的是在使用Apache POI进行Excel导出时,你需要包含特定的JAR依赖文件。 首先,要实现POI导出Excel的功能,你需要下载Apache POI相关的JAR文件。这些文件通常包括以下核心组件: 1. **poi...
springboot+poi导出指定格式Excel模板,完整项目,导出即用。springboot+poi导出指定格式Excel模板,完整项目,导出即用。springboot+poi导出指定格式Excel模板,完整项目,导出即用。springboot+poi导出指定格式...
POI导出Excel参考方法 POI(Poor Obfuscation Implementation)是一个Java的API,用于操作Microsoft Office文档,包括Excel、Word、PowerPoint等。下面是POI导出Excel参考方法的相关知识点: 1. POI的基本概念 ...
本教程将详细讲解如何使用Apache POI在Web环境中导出Excel表格,避免生成不必要的临时文件,从而优化系统资源管理。 一、Apache POI简介 Apache POI 是一个开源项目,它提供了Java API来处理Microsoft的Office格式...
Java Poi 导出excel(支持各种设置字体、颜色、垂直居中)
通过以上步骤,我们成功地实现了使用Apache POI在Java中导出Excel文件,并实现了自动换行的功能。这种方式不仅可以提高工作效率,还能确保数据的准确性和完整性。 #### 六、注意事项与优化建议 - **兼容性问题**:...
Java实现POI导出Excel是Java开发者常用的一种技术,用于生成和操作Microsoft Office Excel文件。在Java中,Apache POI库提供了对微软Office文档格式的支持,包括读取和写入Excel文件。这篇博客文章...
标题“poi导出excel通用类”指的是使用Apache POI库创建一个可以用于导出Excel文件的Java类。Apache POI是开源项目,提供了一组API,使得开发者可以在Java应用程序中读写Microsoft Office格式的文件,包括Excel。在...
在这个场景中,我们关注的是如何使用POI来创建一个功能丰富的Excel导出工具类,它能够自动设置标题、列名、文件名,并且支持插入图片以及合并单元格。下面将详细介绍这些功能的实现。 首先,要创建一个Excel工作簿...
在使用Apache POI导出Excel时,首先需要创建一个`XSSFWorkbook`对象作为工作簿,然后通过工作簿创建`XSSFSheet`对象代表工作表。例如: ```java XSSFWorkbook workbook = new XSSFWorkbook(); XSSFSheet sheet =...
提供的`导出EXCEL.docx`文档可能包含了使用POI导出Excel的代码示例。这个文档通常会详细解释每一步操作,包括如何读取数据、如何设置单元格格式以及如何保存文件。 8. **依赖安装** 要使用Apache POI,你需要在...
这个链接提供了一个详细的Java代码示例,演示了如何使用POI导出Excel。在实际开发中,你可以根据这个示例调整代码以满足自己的需求,比如添加更多的数据处理逻辑或自定义样式。记得在导入项目时,确保包含上述提到的...