SpringBoot 集成poi文件导出

在pom.xml配置文件中加入依赖

	<dependency>
		<groupId>org.apache.poi</groupId>
		<artifactId>poi</artifactId>
		<version>3.15</version>
	</dependency>

工具类源码附上

package com.aping.util;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.Collection;
import java.util.Iterator;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;

public class ExcelUtil {

/**
 * author: vison
 * time: 2019年1月19日,下午10:08:26
 * feature: 
 * @param title 文档标题内容
 * @param heads 表头集合
 * @param data 数据集合
 * @param path 导出文件位置 例:E:\\信息导出表.xls
 */
public static void Out(String title,String[] heads,Collection<?> data,String path) {
	// 创建工作簿
	HSSFWorkbook wb = new HSSFWorkbook();
	// 创建工作表
	HSSFSheet Sheet = wb.createSheet();
	// 创建行
	HSSFRow titleRow = Sheet.createRow(0);
	// 创建单元格
	HSSFCell titleCell = titleRow.createCell(0);
	// 给单元格赋值
	titleCell.setCellValue(title);
	
	
	//创建表头
	HSSFRow headRow = Sheet.createRow(1);
	for (int i = 0; i < heads.length; i++) {
		headRow.createCell(i).setCellValue(heads[i]);
	}
	
	//创建表中数据行
	Iterator<?> iterator = data.iterator();
	int index = 1;
	while(iterator.hasNext()) {
		index++;
		HSSFRow row = Sheet.createRow(index);
		//获取数据
		Object obj = iterator.next();
		//利用反射获取对应数据
		//获取所有属性
		Field[] fields = obj.getClass().getDeclaredFields();
	
		for(int i =0;i<fields.length;i++) {
			HSSFCell cell = row.createCell(i);
			Field field = fields[i];
			String fieldName = field.getName();//获取属性名
			//拼接方法名
			String MethodName = "get"+fieldName.substring(0, 1).toUpperCase()+ fieldName.substring(1);
			
			Class objClass = obj.getClass();
			Method Method;
			Object value = null;
			try {
				Method = objClass.getMethod(MethodName,new Class[] {});
				value = Method.invoke(obj, new Object[] {});
				
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} 
			cell.setCellValue(value+"");
		}
	}
	

	// 导出
	try {
		wb.write(new FileOutputStream(new File(path)));
		wb.close();
	} catch (FileNotFoundException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	} catch (IOException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
  }
}

测试demo的控制层
要传入工具类中所需要的参数

@RequestMapping("exce")
public String exce() {
	List<Staff> data = staffService.findAll();
	String[] heads = {"编号","姓名","性别","手机号码","邮箱","..."};
	String path = "H:\\所有信息.xls";//生成的文件的名称
	ExcelUtil.Out("导出数据", heads, data, path);//"导出数据"是表头  可以自己选
	return "redirect:/Staff/findList";
}

前台页面直接写一个方法调用后台的接口就可以不需要传参数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值