zoukankan      html  css  js  c++  java
  • 基于easypoi 导入demo

    导入依赖

       <!--easyPoi-->
    </dependency>
    <dependency>
    <groupId>cn.afterturn</groupId>
    <artifactId>easypoi-spring-boot-starter</artifactId>
    <version>4.1.0</version>
    </dependency>
    <dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>servlet-api</artifactId>
    <version>2.5</version>
    <!--<scope>provided</scope>-->
    </dependency>
    ExcelUtil
    import cn.afterturn.easypoi.excel.ExcelExportUtil;
    import cn.afterturn.easypoi.excel.ExcelImportUtil;
    import cn.afterturn.easypoi.excel.entity.ExportParams;
    import cn.afterturn.easypoi.excel.entity.ImportParams;
    import cn.afterturn.easypoi.excel.entity.enmus.ExcelType;
    import org.apache.commons.lang3.StringUtils;
    import org.apache.poi.ss.usermodel.Workbook;
    import org.springframework.web.multipart.MultipartFile;


    import javax.servlet.http.HttpServletResponse;
    import java.io.File;
    import java.io.IOException;
    import java.io.InputStream;
    import java.net.URLEncoder;
    import java.util.List;
    import java.util.Map;
    import java.util.NoSuchElementException;

    public class ExcelUtils {
    /**
    * excel 导出
    *
    * @param list 数据
    * @param title 标题
    * @param sheetName sheet名称
    * @param pojoClass pojo类型
    * @param fileName 文件名称
    * @param isCreateHeader 是否创建表头
    * @param response
    */
    public static void exportExcel(List<?> list, String title, String sheetName, Class<?> pojoClass, String fileName, boolean isCreateHeader, HttpServletResponse response) throws IOException {
    ExportParams exportParams = new ExportParams(title, sheetName, ExcelType.HSSF);
    exportParams.setCreateHeadRows(isCreateHeader);
    defaultExport(list, pojoClass, fileName, response, exportParams);
    }

    /**
    * excel 导出
    *
    * @param list 数据
    * @param title 标题
    * @param sheetName sheet名称
    * @param pojoClass pojo类型
    * @param fileName 文件名称
    * @param response
    */
    public static void exportExcel(List<?> list, String title, String sheetName, Class<?> pojoClass, String fileName, HttpServletResponse response) throws IOException {
    defaultExport(list, pojoClass, fileName, response, new ExportParams(title, sheetName, ExcelType.HSSF));
    }

    /**
    * excel 导出
    *
    * @param list 数据
    * @param title 标题
    * @param sheetName sheet名称
    * @param pojoClass pojo类型
    * @param fileName 文件名称
    * @param response
    */
    public static void exportExcelXSSF(List<?> list, String title, String sheetName, Class<?> pojoClass, String fileName, HttpServletResponse response) throws IOException {
    defaultExportXSSF(list, pojoClass, fileName, response, new ExportParams(title, sheetName, ExcelType.XSSF));
    }

    /**
    * excel 导出
    *
    * @param list 数据
    * @param pojoClass pojo类型
    * @param fileName 文件名称
    * @param response
    * @param exportParams 导出参数
    */
    public static void exportExcel(List<?> list, Class<?> pojoClass, String fileName, ExportParams exportParams, HttpServletResponse response) throws IOException {
    defaultExport(list, pojoClass, fileName, response, exportParams);
    }

    /**
    * excel 导出
    *
    * @param list 数据
    * @param fileName 文件名称
    * @param response
    */
    public static void exportExcel(List<Map<String, Object>> list, String fileName, HttpServletResponse response) throws IOException {
    defaultExport(list, fileName, response);
    }

    /**
    * 默认的 excel 导出
    *
    * @param list 数据
    * @param pojoClass pojo类型
    * @param fileName 文件名称
    * @param response
    * @param exportParams 导出参数
    */
    private static void defaultExport(List<?> list, Class<?> pojoClass, String fileName, HttpServletResponse response, ExportParams exportParams) throws IOException {
    Workbook workbook = ExcelExportUtil.exportExcel(exportParams, pojoClass, list);
    downLoadExcel(fileName, response, workbook);
    }

    /**
    * 默认的 excel 导出
    *
    * @param list 数据
    * @param pojoClass pojo类型
    * @param fileName 文件名称
    * @param response
    * @param exportParams 导出参数
    */
    private static void defaultExportXSSF(List<?> list, Class<?> pojoClass, String fileName, HttpServletResponse response, ExportParams exportParams) throws IOException {
    Workbook workbook = ExcelExportUtil.exportExcel(exportParams, pojoClass, list);
    downLoadExcelXSSF(fileName, response, workbook);
    }

    /**
    * 默认的 excel 导出
    *
    * @param list 数据
    * @param fileName 文件名称
    * @param response
    */
    public static void defaultExport(List<Map<String, Object>> list, String fileName, HttpServletResponse response) throws IOException {
    Workbook workbook = ExcelExportUtil.exportExcel(list, ExcelType.HSSF);
    downLoadExcel(fileName, response, workbook);
    }

    /**
    * 下载
    *
    * @param fileName 文件名称
    * @param response
    * @param workbook excel数据
    */
    private static void downLoadExcel(String fileName, HttpServletResponse response, Workbook workbook) throws IOException {
    try {
    response.setCharacterEncoding("UTF-8");
    response.setHeader("content-Type", "application/vnd.ms-excel");
    response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName + "." + ExcelTypeEnum.XLS.getValue(), "UTF-8"));
    workbook.write(response.getOutputStream());
    } catch (Exception e) {
    throw new IOException(e.getMessage());
    }
    }

    /**
    * 下载
    *
    * @param fileName 文件名称
    * @param response
    * @param workbook excel数据
    */
    private static void downLoadExcelXSSF(String fileName, HttpServletResponse response, Workbook workbook) throws IOException {
    try {
    response.setCharacterEncoding("UTF-8");
    response.setHeader("content-Type", "application/vnd.ms-excel");
    response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName + "." + ExcelTypeEnum.XLSX.getValue(), "UTF-8"));
    workbook.write(response.getOutputStream());
    } catch (Exception e) {
    throw new IOException(e.getMessage());
    }
    }

    /**
    * excel 导入
    *
    * @param filePath excel文件路径
    * @param titleRows 标题行
    * @param headerRows 表头行
    * @param pojoClass pojo类型
    * @param <T>
    * @return
    */
    public static <T> List<T> importExcel(String filePath, Integer titleRows, Integer headerRows, Class<T> pojoClass) throws IOException {
    if (StringUtils.isBlank(filePath)) {
    return null;
    }
    ImportParams params = new ImportParams();
    params.setTitleRows(titleRows);
    params.setHeadRows(headerRows);
    params.setNeedSave(true);
    params.setSaveUrl("/excel/");
    try {
    return ExcelImportUtil.importExcel(new File(filePath), pojoClass, params);
    } catch (NoSuchElementException e) {
    throw new IOException("模板不能为空");
    } catch (Exception e) {
    throw new IOException(e.getMessage());
    }
    }

    /**
    * excel 导入
    *
    * @param file excel文件
    * @param pojoClass pojo类型
    * @param <T>
    * @return
    */
    public static <T> List<T> importExcel(MultipartFile file, Class<T> pojoClass) throws IOException {
    return importExcel(file, 1, 1, pojoClass);
    }

    /**
    * excel 导入
    *
    * @param file excel文件
    * @param titleRows 标题行
    * @param headerRows 表头行
    * @param pojoClass pojo类型
    * @param <T>
    * @return
    */
    public static <T> List<T> importExcel(MultipartFile file, Integer titleRows, Integer headerRows, Class<T> pojoClass) throws IOException {
    return importExcel(file, titleRows, headerRows, false, pojoClass);
    }

    /**
    * excel 导入
    *
    * @param file 上传的文件
    * @param titleRows 标题行
    * @param headerRows 表头行
    * @param needVerfiy 是否检验excel内容
    * @param pojoClass pojo类型
    * @param <T>
    * @return
    */
    public static <T> List<T> importExcel(MultipartFile file, Integer titleRows, Integer headerRows, boolean needVerfiy, Class<T> pojoClass) throws IOException {
    if (file == null) {
    return null;
    }
    try {
    return importExcel(file.getInputStream(), titleRows, headerRows, needVerfiy, pojoClass);
    } catch (Exception e) {
    throw new IOException(e.getMessage());
    }
    }

    /**
    * excel 导入
    *
    * @param inputStream 文件输入流
    * @param titleRows 标题行
    * @param headerRows 表头行
    * @param needVerfiy 是否检验excel内容
    * @param pojoClass pojo类型
    * @param <T>
    * @return
    */
    public static <T> List<T> importExcel(InputStream inputStream, Integer titleRows, Integer headerRows, boolean needVerfiy, Class<T> pojoClass) throws IOException {
    if (inputStream == null) {
    return null;
    }
    ImportParams params = new ImportParams();
    params.setTitleRows(titleRows);
    params.setHeadRows(headerRows);
    params.setSaveUrl("/excel/");
    params.setNeedSave(true);
    params.setNeedVerify(needVerfiy);
    try {
    return ExcelImportUtil.importExcel(inputStream, pojoClass, params);
    } catch (NoSuchElementException e) {
    throw new IOException("excel文件不能为空");
    } catch (Exception e) {
    throw new IOException(e.getMessage());
    }
    }

    /**
    * 功能:检查模板标题行小区是否是提交时传来的小区
    *
    * @param file
    * @param areaName
    * @return void
    * @author Keats
    * @date 2020/1/8 11:33
    */
    /* public static void checkArea(MultipartFile file, String areaName) throws WokeException {
    // 创建Excel,读取文件内容
    try {
    HSSFWorkbook workbook = new HSSFWorkbook(file.getInputStream());
    //读取默认第一个工作表sheet(方式二)
    HSSFSheet sheet = workbook.getSheetAt(0);
    //读取工作表中的数据
    //获取sheet中最后一行行号
    HSSFRow row = sheet.getRow(0);
    //获取当前行最后单元格的列号
    HSSFCell cell = row.getCell(0);
    String title = cell.getStringCellValue();
    String[] split = title.split(":");
    try {
    if(!split[1].equals(areaName)){
    throw new WokeException(777, "模板小区不正确!");
    }
    } catch (ArrayIndexOutOfBoundsException e) {
    throw new WokeException(777, "模板小区不正确!");
    }
    } catch (IOException e) {
    throw new WokeException(777, "模板不正确!");
    }
    }*/

    /**
    * Excel 类型枚举
    */
    enum ExcelTypeEnum {
    XLS("xls"), XLSX("xlsx");
    private String value;

    ExcelTypeEnum(String value) {
    this.value = value;
    }

    public String getValue() {
    return value;
    }

    public void setValue(String value) {
    this.value = value;
    }
    }
    }
    导入之前先下载模板

     导入

    
    

    public List<String> importHouse(MultipartFile file) throws IOException, yyException {

    List<User> list = ExcelUtils.importExcel(file, User.class);
    List<User> users = new ArrayList<>();
    List<String> errorInfo = new ArrayList<>();
    if (!ObjectUtils.isEmpty(list)) {
    for (int i = 0; i < list.size(); i++) {
    // 从正文开始的第一行数据
    int num = i + 3;
    // boolean flag = false;
    User user = list.get(i);
    if (!ObjectUtils.isEmpty(user)) {
    String name = user.getUsername().replace(" ", "");
    if (name.length() > 20) {
    String s = "第" + num + "行 用户名超过20字符";
    errorInfo.add(s);
    log.info(s);
    continue;
    }
    }
    List<User> usersl = userMapper.findAllUser();
    if (usersl != null) {
    //查看是否存在重复数据
    User U = userMapper.queryBYAccount(user.getAccount());
    if (U == null) {
    // flag = true;
    user.setId(idWorker.nextId());
    users.add(user);
    } else {
    String s = "第" + num + "行 中该帐号已在系统中存在";
    errorInfo.add(s);
    log.info(s);
    continue;
    }
    }
    }
    if (errorInfo.size() < 1) {
    // 插入数据
    userMapper.insertList(users);
    return errorInfo;
    } else {
    // 错误行返回去
    String string = JSONObject.toJSONString(errorInfo);
    return errorInfo;
    }

    } else {
    throw new yyException(ErrorCodeAndMsg.EXCEL_EXPORT_FAIL3);
    }

    }
    
    

     

    <insert id="insertList" parameterType="java.util.List">
    INSERT INTO user (
    `id`,
    `password`,
    `username`,
    `account`
    )
    values
    <foreach collection="users" item="item" index="index" separator=",">
    (
    #{item.id},#{item.password}, #{item.username}, #{item.account}
    )
    </foreach>
    </insert>
     
  • 相关阅读:
    几个概率题
    几个智力题。。
    [算法]各种二分查找
    深入 JavaScript 时间对象 Date
    Leaflet 调用百度瓦片地图服务
    JavaScript中进制和字符编码问题
    DOM事件流
    flex 弹性布局
    javascript 闭包内部机制
    HTML DOM setAttribute()、与createAttribute()
  • 原文地址:https://www.cnblogs.com/yangxiaoli/p/12718007.html
Copyright © 2011-2022 走看看