Importación y exportación de documentos de Excel utilizados por las herramientas HuTool

Importación y exportación de documentos de Excel utilizados por las herramientas HuTool


Prefacio

En el desarrollo del trabajo diario, la importación y exportación de Excel es indispensable. Si escribe usted mismo el método de importación y exportación correspondiente, será muy engorroso. Este artículo utiliza la función de importación y exportación de Excel implementada por la clase de herramienta Hutool para reducir en gran medida el desarrollo futuro Importar y exportar operaciones relacionadas en Excel.


Sugerencia: El siguiente es el contenido de este artículo, los siguientes casos son para referencia

1. ¿Qué es Hutool?

      Hutool es una pequeña y completa biblioteca de clases de herramientas Java. A través del encapsulado de métodos estáticos, reduce el costo de aprendizaje de las API relacionadas y mejora la eficiencia del trabajo. Hace que Java tenga la elegancia de un lenguaje funcional y hace que el lenguaje Java sea "dulce".

      Las herramientas y métodos en Hutool provienen de la elaboración meticulosa de cada usuario. Cubre todos los aspectos del código subyacente del desarrollo Java. No es solo una herramienta para resolver pequeños problemas en el desarrollo de proyectos a gran escala, sino también una responsabilidad de eficiencia en proyectos pequeños;

      Hutool es una alternativa amigable al paquete "util" en el proyecto. Ahorra a los desarrolladores el tiempo de encapsulación de clases públicas y métodos de herramientas públicas en el proyecto, permite que el desarrollo se concentre en los negocios y evita errores causados ​​por encapsulamiento imperfecto.

En segundo lugar, exporte el archivo de Excel

   1. Introducir dependencias relacionadas

      Solo hay un puñado de bibliotecas Java para las operaciones de MS Office, y la más famosa es la biblioteca Apache POI. Esta biblioteca es extremadamente poderosa, pero no es fácil de usar. Hutool encapsula algunas herramientas comunes para PDI, lo que hace que sea extremadamente simple manipular Excel y otros archivos en Java. Hutool-poi es un paquete para Apache POI, por lo que los usuarios deben importar la biblioteca de POI por sí mismos, Hutool no lo importa de forma predeterminada.

      Cabe señalar que la versión poi-ooxml de hutool-4.x debe ser superior a 3.17, y la versión poi-ooxml de hutool-5.x debe ser superior a 4.1.2; la información de dependencia utilizada en este artículo se muestra en la siguiente figura:

<!-- hutool工具类依赖-->
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.4.3</version>
</dependency>

<!--POI依赖,对office进行操作-->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>4.1.2</version>
</dependency>

   2. La realización de la función de exportación de Excel

      Hutool encapsula la escritura de Excel como ExcelWriter. El principio es empaquetar el objeto del Libro de trabajo. Después de cada llamada al método de combinación (combinación de celdas) o escritura (escritura de datos), solo escribe los datos en el Libro de trabajo, no en el archivo, solo en la llamada Solo después del método de vaciado o cierre se escribirá el archivo. Debido al mecanismo, el objeto ExcelWriter debe cerrarse después de que se complete la escritura y se puede llamar al método close para cerrarlo. En este momento, los recursos del objeto Workbook se liberarán; de lo contrario, el Workbook con datos siempre estará residente en la memoria. El código es el siguiente:

@RequestMapping(EXCEL_DOWNLOAD)
public void excelExport(HttpServletResponse httpServletResponse) throws IOException {
    
    
UserDTO userDTO = new UserDTO();
List<UserDTO> userDTOS = userService.selectUserDOBatch(userDTO);
//通过hutool工具创建的excel的writer,默认为xls格式
ExcelWriter writer = ExcelUtil.getWriter();
//设置要导出到的sheet
writer.setSheet("表2");
writer.setSheet("表3");
//自定义excel标题和列名
writer.addHeaderAlias("id","用户ID");
writer.addHeaderAlias("userName","用户名");
writer.addHeaderAlias("loginPassword","密码");
writer.addHeaderAlias("email","邮箱");
writer.addHeaderAlias("createDate","数据创建日期");
//合并单元格后的标题行,使用默认标题样式
writer.merge(4,"用户基本信息表");
writer.renameSheet(0,"用户登录信息");
//一次性写出内容,使用默认样式,强制输出标题
writer.write(userDTOS,true);

httpServletResponse.setContentType("application/vnd.ms-excel;charset=utf-8");
//name是下载对话框的名称,不支持中文,想用中文名称需要进行utf8编码
String excelName = "用户基本信息表";
//excelName = new String(excelName.getBytes(),"utf-8");
excelName = URLEncoder.encode(excelName, "utf-8");
httpServletResponse.setHeader("Content-Disposition", "attachment;filename=" + excelName +".xls");

//将excel文件信息写入输出流,返回给调用者
ServletOutputStream excelOut = null;
try {
    
    
excelOut = httpServletResponse.getOutputStream();
writer.flush(excelOut,true);
} catch (IOException e) {
    
    
e.printStackTrace();
}finally {
    
    
writer.close();
}
IoUtil.close(excelOut);
}

      El formato de Excel exportado anteriormente es .xls. Si desea exportar un archivo de Excel en formato .xlsx, solo necesita modificar el código de ubicación correspondiente que se muestra en la figura anterior. El código de modificación es:

//设置返回excel的格式为xlsx
httpServletResponse.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8");
httpServletResponse.setHeader("Content-Disposition","attachment;filename="+ URLEncoder.encode("用户信息表","utf-8") + ".xlsx");

      El archivo de Excel generado es el siguiente:

Inserte la descripción de la imagen aquí

En segundo lugar, exporte el archivo de Excel

   1. Excel Read-ExcelReader

      La importación de archivos de Excel se divide en tres situaciones:

      1. Leer todas las filas y columnas en Excel, todas expresadas en listas

ExcelReader reader = ExcelUtil.getReader("d:/aaa.xlsx");
List<List<Object>> readAll = reader.read();

      2. Leer como una lista de mapas, la primera línea predeterminada es la fila del título, la clave en el mapa es el título y el valor es el valor de celda correspondiente al título.

ExcelReader reader = ExcelUtil.getReader("d:/aaa.xlsx");
List<Map<String,Object>> readAll = reader.readAll();

      3. Lea como una lista de Bean, el nombre del campo en el Bean es el título y el valor del campo es el valor de la celda correspondiente al título.

ExcelReader reader = ExcelUtil.getReader("d:/aaa.xlsx");
List<Person> all = reader.readAll(Person.class);

      Este artículo utiliza el tercer método para implementar el ejemplo de importación y lectura de Excel, y el código relevante es el siguiente:

 @RequestMapping(READ_EXCEL)
    public void readExcel(){
    
    
        ExcelReader reader = ExcelUtil.getReader("H:\\user.xlsx");
        List<UserDTO> userDTOS = reader.readAll(UserDTO.class);
        //日志输出读取到的信息
        log.info(userDTOS.toString());
    }

       El código de la clase UserDTO es el siguiente:

@Data
public class UserDTO {
    
    
    @NotNull(message = "用户id不能为空")
    private Integer id;

    @NotNull(message = "用户名不能为空")
    @Size(min = 4, max = 16, message = "用户名长度错误")
    private String userName;

    @NotNull(message = "密码不能为空")
    @Size(min = 4, max = 16, message = "密码长度错误")
    private String loginPassword;

    @NotNull(message = "邮箱不能为空")
    @Email(message = "邮箱格式错误")
    private String email;


    @NotNull(message = "日期不能为空")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    private Date createDate;
}

Supongo que te gusta

Origin blog.csdn.net/qq_36403831/article/details/108715160
Recomendado
Clasificación