Spring Boot下的一种导出Excel文件的代码框架

1、前言​ 在Spring Boot项目中,将数据导出成Excel格式文件是常见的功能。与Excel文件导入类似,此处也用代码框架式的方式实现Excel文件导出,使得代码具有可重用性,并保持导出数据转换的灵活性。​ 相对于导入Excel文件的处理,导出Excel文件要简单一些。这里的Excel文件支持xlsx格式。2、基本框架​ 包括一个接口类ExcelExportable和一个Excel导出处理类ExcelExportHandler,以及支持ExcelExportable接口类的实体类。与基
摘要由CSDN通过智能技术生成

1、前言

​ 在Spring Boot项目中,将数据导出成Excel格式文件是常见的功能。与Excel文件导入类似,此处也用代码框架式的方式实现Excel文件导出,使得代码具有可重用性,并保持导出数据转换的灵活性。

​ 相对于导入Excel文件的处理,导出Excel文件要简单一些。这里的Excel文件支持xlsx格式。

2、基本框架

​ 包括一个接口类ExcelExportable和一个Excel导出处理类ExcelExportHandler,以及支持ExcelExportable接口类的实体类。与基类相比,使用接口类的好处是可以实现多个接口类,而不会有多重继承的麻烦。这样实体类可以同时支持Excel和CSV格式文件的导出。

2.1、Excel导出处理类ExcelExportHandler

​ ExcelExportHandler类的代码如下:

package com.abc.questInvest.excel;

import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.util.List;

import org.apache.poi.ss.usermodel.HorizontalAlignment;
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;

import com.abc.questInvest.excel.ExcelExportable;

/**
 * @className	: ExcelExportHandler
 * @description	: Excel导出处理类
 *
 */
public class ExcelExportHandler<T extends ExcelExportable> {
   
	
	/**
	 * 
	 * @methodName		: exportExcelFile
	 * @description		: 导出Excel文件供下载
	 * @param rowDataList	: 导出的数据列表
	 * @param excelFilePath	: Excel文件临时文件路径
	 * @param sheetName: sheet页名称
	 * @throws Exception	: 发生异常时,抛出
	 *
	 */
	public void exportExcelFile(List<T> rowDataList,String excelFilePath,String sheetName) 
			throws Exception {
   
		if (rowDataList.size() == 0) {
   
			//必须要有导出数据,否则创建标题列失败
			throw new Exception("无导出数据.");
		}
		
		XSSFWorkbook wb = null;
		wb = new XSSFWorkbook();

		//创建sheet页
		XSSFSheet sheet = wb.createSheet(sheetName);
		
		//创建标题行
		createTitle(wb,sheet,rowDataList.get(0));
		
		//添加数据
		addSheetContent(sheet,wb,rowDataList);
		
		//输出文件数据供下载
		outputExcelFile(excelFilePath,wb);
		
	}	
	
	/**
	 * 
	 * @methodName		: createTitle
	 * @description		: 设置标题行
	 * @param workbook	: workbook对象
	 * @param sheet		: sheet对象
	 * @throws Exception	: 发生异常时,抛出
	 *
	 */
	private void createTitle(XSSFWorkbook workbook, XSSFSheet sheet,T rowData) throws Exception{
   
	    XSSFRow row = sheet.createRow(0);
		//取得标题行
		String[] arrTitles = rowData.outputTitleList();

	    //设置列宽
	    for (int i = 0; i < arrTitles.length; i++){
   
	    	//设置固定宽度,setColumnWidth的第二个参数的单位是1/256个字节宽度
	        sheet.setColumnWidth(i,arrTitles[i].getBytes("UTF-8").length * 256);
	    	
	    	//设置自适应宽度,性能不高,故不用了
	    	//sheet.autoSizeColumn(i);
		}
	    
	    //设置为居中加粗
	    XSSFCellStyle style = workbook.createCellStyle();
	    XSSFFont font = workbook.createFont(
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值