Easypoi realiza la exportación e importación de excel
He estado usando poi para importar y exportar antes, y todavía es muy problemático escribir. Aunque puedo pegar y copiar el mismo código, es un gran problema después de todo.
Por lo tanto, intente utilizar easypoi para importar y exportar Excel. Cotilleando menos y comience a trabajar ...
Paso 1: paquete de guía
<!--easypoi需要导包的-->
<dependency>
<groupId>cn.afterturn</groupId>
<artifactId>easypoi-base</artifactId>
<version>3.2.0</version>
</dependency>
<dependency>
<groupId>cn.afterturn</groupId>
<artifactId>easypoi-web</artifactId>
<version>3.2.0</version>
</dependency>
<dependency>
<groupId>cn.afterturn</groupId>
<artifactId>easypoi-annotation</artifactId>
<version>3.2.0</version>
</dependency>
El segundo paso es escribir la clase de entidad, importar y exportar anotaciones, la clase de entidad debe escribirse sin desviación (énfasis)
Introducción al atributo de anotación:
exportación de generación especificado nombre nombre de la columna excel
una posición correspondiente a la ORDERNUM atributo puede especificar derivada donde la columna
de anchura a la anchura de la celda de
tipo dispuesto deriva tipo un texto, 2 es un cuadro, 3 es una función, 10 numeral texto predeterminado
Reemplazar: Vale la pena reemplazar el ejemplo: replace = {"ID_1"} El valor de la base de datos es "1", se reemplazará automáticamente por "ID" al exportar
Ejemplo: @Excel (name = "Tipo de certificado", replace = {"ID_ 1 ”}, orderNum =“ 1 ”)
/ **
* Exportar fecha de datos a formato aaaa-MM-dd
* mergeVertical establece si fusionar columnas verticalmente
* mergeRely establece los requisitos previos para fusionar columnas, es decir: solo cuando el índice es de 2 columnas (Es decir: columna "género") se ha
fusionado, luego, cuando la longitud vertical de esta columna es la misma, se puede fusionar verticalmente; si la
columna * citada como 2 (es decir: columna "género") los datos longitudinales son diferentes, entonces esto Los datos verticales de las columnas son los mismos, por lo que
* no se fusionará
* /
@Excel (name = "hora de ingresar a la escuela", mergeVertical = true, mergeRely = {2}, format = "aaaa-MM-dd", orderNum = "5", ancho = 20)
package com.sinux.easypoi.entity;
import cn.afterturn.easypoi.excel.annotation.Excel;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author Admin
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class NewExcelOperateEntity {
/**
* @Excel注解的一些常用属性
* name:列名
* orderNum:第几列
* replace:值得替换 例:replace = {"身份证_1"} 数据库值为"1",导出时会自动被"身份证"代
*/
@Excel(name="姓名",orderNum = "0")
private String name;
@Excel(name="证件类型",replace = {"身份证_1"},orderNum = "1")
private String identifyType;
@Excel(name = "证件号码", orderNum = "2")
private String identifyNo;
@Excel(name = "手机号1", orderNum = "3",mergeVertical = true)
private String phoneA;
@Excel(name = "手机号2", orderNum = "4",mergeVertical = true)
private String phoneB;
@Excel(name = "手机号3", orderNum = "5",mergeVertical = true)
private String phoneC;
@Excel(name = "固定电话", orderNum = "6",mergeVertical = true)
private String telephone;
@Excel(name = "电子邮箱", orderNum = "7",mergeVertical = true)
private String email;
@Excel(name = "身份证地址", orderNum = "8",mergeVertical = true)
private String idcardAdress;
@Excel(name = "户籍地址", orderNum = "9",mergeVertical = true)
private String householdAddress;
@Excel(name = "居住地址", orderNum = "10",mergeVertical = true)
private String liveAddress;
@Excel(name = "工作地址", orderNum = "11",mergeVertical = true)
private String workAddress;
}
Paso 3: Exportar
@GetMapping("/export")
public void exportExcel(HttpServletResponse response){
List<NewExcelOperateEntity> list = new ArrayList<>();
NewExcelOperateEntity newExcelOperateEntity = null;
Random random = new Random();
//造数据
for(int i=0;i<10;i++){
newExcelOperateEntity = new NewExcelOperateEntity("姓名"+i,
"1",
random.nextInt(3)+i+"",
random.nextInt(3)+i+"",
random.nextInt(3)+i+"",
random.nextInt(3)+i+"",
"固定电话"+i,
"电子邮箱"+i,
"身份证地址"+i,
"户籍地址"+i,
"居住地址"+i,
"工作地址"+i);
list.add(newExcelOperateEntity);
}
ExportParams exportParams = new ExportParams();
exportParams.setSheetName("I am sheetName");
Workbook workbook = ExcelExportUtil.exportExcel(exportParams,NewExcelOperateEntity.class,list);
try {
response.setHeader("content-Type", "application/vnd.ms-excel");
// 下载文件的默认名称
response.setHeader("Content-Disposition", "attachment;filename=" +
URLEncoder.encode("用户数据表","UTF-8") + "**.xlsx**");
workbook.write(response.getOutputStream());
} catch (IOException e) {
e.printStackTrace();
}
}
Paso 4: Importar
@RequestMapping("/import")
public boolean importExcel(MultipartFile file){
ImportParams importParams = new ImportParams();
List<NewExcelOperateEntity> list = new ArrayList<>();
try {
list = ExcelImportUtil.importExcel(file.getInputStream(),NewExcelOperateEntity.class,importParams);
for(NewExcelOperateEntity s : list){
System.out.println(s);
}
} catch (Exception e) {
e.printStackTrace();
}
return true;
}