java使用POI实现excel文件的导入和导出(通用方法)
说明:
1、文件导出功能:
通过反射获取实体类的属性名和属性值,写入文件是第一行为属性名,从第二行开始为属性值,调用时只需传入一个任意实体集合(List)即可。
2、文件导入功能
文件导入功能需要定义一个实体类用于接受解析excel后的内容。package com.cz.excel; import com.cz.model.TestCase; import org.apache.poi.hpsf.DocumentSummaryInformation; import org.apache.poi.hpsf.SummaryInformation; import org.apache.poi.hssf.usermodel.*; import org.apache.poi.ss.usermodel.FillPatternType; import org.apache.poi.ss.usermodel.IndexedColors; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.web.multipart.MultipartFile; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.util.ArrayList; import java.util.Date; import java.util.List; /** * 工具类,用于文件上传、下载、解析 * @program: PostGirl-panent * @description: PoiUtils * @author: Cheng Zhi * @create: 2021-02-28 09:57 **/ public class PoiUtils {/** * 将对象集合导出到excel * @param list * @param * @return */ public static ResponseEntity exportToExcel(List list) {// 1、创建一个excel文档 HSSFWorkbook workbook = new HSSFWorkbook(); // 2、创建文档摘要 workbook.createInformationProperties(); // 3、获取并配置文档摘要信息 DocumentSummaryInformation docInfo = workbook.getDocumentSummaryInformation(); // 文档类别 docInfo.setCategory("文档类别"); // 文档管理员 docInfo.setManager("PostGirl"); // 设置公司信息 docInfo.setCompany("www.postgirl.com"); // 4、获取文档摘要信息 SummaryInformation summaryInformation = workbook.getSummaryInformation(); // 文档标题 summaryInformation.setTitle("文档标题"); // 文档作者 summaryInformation.setAuthor("PostGirl"); // 备注信息 summaryInformation.setComments("本文档由 PostGirl 提供"); // 5、创建样式 // 创建标题行的样式 HSSFCellStyle headerStyle = workbook.createCellStyle(); headerStyle.setFillForegroundColor(IndexedColors.GREEN.getIndex()); // 背景颜色 headerStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND); // 填充模式 HSSFSheet sheet = workbook.createSheet();// 不传name 默认为sheet1 // 6、创建标题行 第一行数据 // 只循环一次目的是将对象名写入到excel标题上 for (T t : list) {HSSFRow row = sheet.createRow(0); String[] fieldNames = getFiledNames(t); for (int i=0; i(); TestCase testCase = null; try {// 1、创建一个workbook对象 HSSFWorkbook workbook = new HSSFWorkbook(file.getInputStream()); // 2、获取workboot中表单的数量 int numberOfSheets = workbook.getNumberOfSheets(); for (int i=0; i= 'A' && str.charAt(0) <= 'Z') {return str; } char[] ch = str.toCharArray(); ch[0] -= 32; return String.valueOf(ch); } }来源:https://www.icode9.com/content-1-874551.html