加入收藏 | 设为首页 | 会员中心 | 我要投稿 甘南站长网 (https://www.0941zz.com/)- 科技、行业物联网、开发、云计算、云管理!
当前位置: 首页 > 运营中心 > Apache > 正文

Apache POI操作分批导入MySQL数据库

发布时间:2023-02-20 10:45:32 所属栏目:Apache 来源:互联网
导读:poi介绍: Apache POI是用Java编写的免费开源的跨平台的Java API,Apache POI提供API给Java程序对Microsoft Office格式档案读和写的功能,其中使用最多的就是使用POI操作Excel文件。 POI使用到的相关maven依赖坐标如下: dependency groupIdorg.apache.poi/g

              case Cell.CELL_TYPE_FORMULA: //公式
                  cellValue = String.valueOf(cell.getCellFormula());
                  break;
              case Cell.CELL_TYPE_BLANK: //空值
                  cellValue = "";
                  break;
              case Cell.CELL_TYPE_ERROR: //故障
                  cellValue = "非法字符";
                  break;
              default:
                  cellValue = "未知类型";
                  break;
          }
          return cellValue;
      }
  }
  2.2.1、创建批量上传控制器
 
  这里使用的dubbo远程调用了接口方法
 
  /**
   * 项目名称:health_parent
   * 描述:预约管理控制器
   *
   * @author zhong
   * @date 2022-06-18 14:50
   */
  @RestController
  @RequestMapping("/ordersetting")
  public class OrderSettingController {
      /**
       * 远程调用预约管理的服务接口
       */
      @Reference
      private OrderSettingService orderSettingService;
  
      /**
       * 文件上传,实现预约管理的批量导入
       * @param excelFile
       * @return
       */
      @RequestMapping("/upload")
      public Result upload(@RequestParam("excelFile") MultipartFile excelFile){
          try {
              // 1、使用工具类解析上传的数据
              List<String[]> list = POIUtils.readExcel(excelFile);
              // 将读取的表格数据转换为表格预约对象数据
              List<OrderSetting> data = new ArrayList<>();
              // 2、处理解析的数据
              for (String[] strings : list) {
                  // 获取到导入数据行的第一个单元格(预约时间)
                  String orderSate = strings[0];
                  // 获取到导入数据行的第二个单元格(预约姓名)
                  String number = strings[1];
                  // 将重新获取到的数据添加到预约集合中
                  OrderSetting orderSetting = new OrderSetting(new Date(orderSate), Integer.parseInt(number));
                  data.add(orderSetting);
              }
              // 2、通过dubbo远程调用服务实现数据批量导入到数据库
              orderSettingService.add(data);
  
          } catch (IOException e) {
              e.printStackTrace();
              return new Result(false, MessageConstant.IMPORT_ORDERSETTING_FAIL);
          }
          return new Result(true, MessageConstant.IMPORT_ORDERSETTING_SUCCESS);
      }
  }
  
  import com.alibaba.dubbo.config.annotation.Service;
  import com.itheima.pojo.OrderSetting;
  import com.zcl.dao.OrderSettingDao;
  import com.zcl.service.OrderSettingService;
  import org.springframework.transaction.annotation.Transactional;
  
  import java.util.List;
  
  /**
   * 项目名称:health_parent
   * 描述:预约管理接口实现类
   *
   * @author zhong
   * @date 2022-06-18 15:09
   */
  @Service(interfaceClass = OrderSettingService.class)
  @Transactional
  public class OrderSettingImpl implements OrderSettingService {
      /**
       * 注入保存数据
       */
      @Autowired
      private OrderSettingDao orderSettingDao;
  
      /**
       * 批量上传业务实现
       * @param data
       */
      @Override
      public void add(List<OrderSetting> data) {
          // 判断集合数据是否为空
          if(data != null && data.size() > 0){
              // 判断当前日期是否已经进行了预约设置
              for (OrderSetting datum : data) {
                  // 根据日期查询预约消息
                  long count = orderSettingDao.findCountByOrderDate(datum.getOrderDate());
                  if(count > 0){
                      // 已进行预约管理,执行更新操作
                      orderSettingDao.editNumberByOrderDate(datum);
                  }else{
                      // 添加预约设置
                      orderSettingDao.add(datum);

(编辑:甘南站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

推荐文章
    热点阅读