poi 读取 excel表写数据库

xiaoxiao2025-06-03  48

    

package com.pactera.vds.regionalSchedule.controller;

import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cloud.context.config.annotation.RefreshScope; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile;

import com.alibaba.fastjson.JSONObject; import com.pactera.vds.regionalSchedule.service.RegionalScheduleService;

import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam;

@RestController @Api(value = "区域排期API controller", tags = { "区域排期操作接口" }) @RequestMapping("/regionalSchedule") @RefreshScope public class RegionalScheduleController {

    private final Logger logger = LoggerFactory.getLogger(this.getClass());

    JSONObject message = new JSONObject();     @Autowired     RegionalScheduleService regionalScheduleService;

    /**      * 读取excel表Controller      * file excel文件名 AccountName 用户名      * @param file      * @return      */     @ApiOperation(value = "读取excel...", notes = "")     @RequestMapping(value = "/importAdd", method = RequestMethod.POST)     public JSONObject importEmp(@RequestParam("file") MultipartFile file,             @RequestParam @ApiParam(name = "AccountName", value = "") String AccountName) {         String fileName = file.getOriginalFilename();         try {             JSONObject batchImport = regionalScheduleService.batchImport(fileName, file,AccountName);             return batchImport;         } catch (Exception e) {             message.put("success", false);             message.put("message", e.getMessage());             return message;         }     }

}  

================================================================================================

package com.pactera.vds.regionalSchedule.service.impl;

import java.io.InputStream; import java.util.ArrayList; import java.util.List; import java.util.Map;

import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile;

import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.pactera.vds.regionalSchedule.mapper.RegionalScheduleMapper; import com.pactera.vds.regionalSchedule.model.RegionalActivity; import com.pactera.vds.regionalSchedule.model.RegionalSchedule;

/**  *   * @author wstdf 2018-08-17  *  */ @Service("regionalScheduleService") public class RegionalScheduleImpl {     private final Logger logger = LoggerFactory.getLogger(this.getClass());     @Autowired     RegionalScheduleMapper regionalScheduleMapper;       /**      * 导入 excel      */     public JSONObject batchImport(String fileName, MultipartFile file,String AccountName) throws Exception {         JSONObject result = new JSONObject();         if (!fileName.matches("^.+\\.(?i)(xls)$") && !fileName.matches("^.+\\.(?i)(xlsx)$"))             throw new Exception("上传文件格式不正确");         boolean isExcel2003 = true;         if (fileName.matches("^.+\\.(?i)(xlsx)$"))             isExcel2003 = false;         InputStream is = file.getInputStream();         Workbook wb = null;         if (isExcel2003)             wb = new HSSFWorkbook(is);         else             wb = new XSSFWorkbook(is);         Sheet sheet = wb.getSheetAt(0);         String mediumName = sheet.getRow(0).getCell(0).getStringCellValue();          Map<String,String> user= regionalScheduleMapper.selectUser(AccountName);//获取大区         //logger.info("导入区域排期-" + mediumName + "开始, 总条数: " + (sheet.getLastRowNum() - 2));             // 区域排期-活动             List<String> importAddActivity = importAddActivity(sheet, 0,user);             result.put("errorMessage", importAddActivity);             if(importAddActivity.contains("您只能导入本大区的数据")){                 result.put("message", "新增失败!");                 result.put("success", false);             }else{                                 result.put("message", "新增成功!");                 result.put("success", true);             }                   return result;     }

    // 导入-方法     public List<String> importAddActivity(Sheet sheet, Integer mediumType, Map<String, String> user) throws Exception {         List<String> errorList = new ArrayList<String>();         JSONArray regionalScheduleArr = new JSONArray();         for (int r = 0; r <= sheet.getLastRowNum(); r++) {             //实体类             RegionalSchedule regionalSchedule = new RegionalSchedule();             RegionalActivity regionalActivity = new RegionalActivity();

            Row row = sheet.getRow(r);             if (row == null) {                 continue;             }                 regionalSchedule.setMediumType(mediumType);// 101                 regionalActivity.setMediumType(mediumType);                                   // uuid                 String uuid = row.getCell(1).getStringCellValue();                 //logger.info("1 == " + uuid);// uuid                 regionalSchedule.setUuid(uuid);

                String mediumName = row.getCell(2).getStringCellValue();                                   String fromArea = row.getCell(3).getStringCellValue();             //    logger.info("3 == " + fromArea);// fromArea                 regionalSchedule.setFromArea(fromArea);                 regionalActivity.setFromArea(fromArea);

                String province = row.getCell(4).getStringCellValue();             //    logger.info("4 == " + province);                 regionalActivity.setProvince(province);

                String city = row.getCell(5).getStringCellValue();                 //logger.info("5 == " + city);                 regionalActivity.setCity(city);

                Cell year = row.getCell(6);                 //logger.info("6 == " + year);// 年 beginTime 2019.0

                Cell month = row.getCell(8);                 //logger.info("8 == " + month);// 月 endTime 3月                 regionalSchedule.setBeginTime(month.toString());               regionalScheduleArr.add(regionalSchedule);

        }         //logger.info("读取完成,开始新增...");         int totalNumber = regionalScheduleArr.size();         int trueNumber = 0;         //logger.info("新增总条数 : " + totalNumber);         for (int i = 0; i < regionalScheduleArr.size(); i++) {             // 遍历新增 todo         }         //logger.info("新增完成!  新增总数 : " + totalNumber + "条 , 新增成功 : " + trueNumber + " 条 " + " 新增错误的信息:  " + errorList);         errorList.add("新增总数 : " + totalNumber + "条 ");         errorList.add("新增成功 : " + trueNumber + " 条 ");         return errorList;     }    }  

 

 

 

转载请注明原文地址: https://www.6miu.com/read-5031189.html

最新回复(0)