需求:根据客户号和证件号,查询出折算保费和积分值,插入到黄色列。

最近客户提取数据的频率是越来越高了,数据量越来越大了,方法1出现了一次重大事故,先只能使用方法2了,虽然麻烦一点,也是没办法啊。

  1. 方法1:使用mysql客户端,建临时表—>导入excel—>使用sql查询修改临时表缺少的数据—>导出excel—>删临时表。此方法简单粗暴,但不能用于大数据量,易锁表,尤其是读写分离时会导致同步失败
  2. 方法2:当然就信手拈来的java代码了。虽然简单,也想做个笔记。这里是查库数据,遍历excel数据,证件号相同时插入excel。启动项目后,main'方法执行就ok了。下次换了excel,变更下行或列。
    部分包
    import org.apache.commons.lang.StringUtils;
    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.XSSFRow;
    import org.apache.poi.xssf.usermodel.XSSFSheet;
    import org.apache.poi.xssf.usermodel.XSSFWorkbook;import java.io.*;
    import java.util.ArrayList;
    import java.util.List;@Transactional
    @Service
    public class AddUserImpl implements AddUser {public void getIslog(String filepath) {OutputStream out = null;List<Model1> model1list = adduserDAO.getIslog();//查询数据:try {File file = new File(filepath);BufferedInputStream in = new BufferedInputStream(new FileInputStream(file));Workbook workBook = new XSSFWorkbook(in);//获取excelSheet sheet = workBook.getSheetAt(0);//获取第一个sheet页int i = 0;//用于显示空行int j = 0;//已经匹配到的数据行for (int rowNum = 1; rowNum <= sheet.getLastRowNum(); rowNum++) {//从表格第二行开始遍历i += 1;Row row = sheet.getRow(rowNum);//获取行Cell cell = row.getCell(7);//获取该行的第7列的单元格if (null == cell) {System.out.println("null====第" + i + "行");continue;}cell.setCellType(Cell.CELL_TYPE_STRING);//设置单元格格式,证件号多为纯数字String idno = cell.getStringCellValue();//获取单元格数据idno = StringUtils.deleteWhitespace(idno);//删除字符串中的空格,不然怎么equalsfor (Model1 model1 : model1list) {if (null != model1.getIdno() && model1.getIdno().equals(idno)) {Cell cell6 = row.createCell(11);//创建单元格cell6.setCellValue(null == model1.getIsLog() ? "否" : model1.getIsLog());//插入单元格数据,不能为空Cell cell7 = row.createCell(12);cell7.setCellValue(null == model1.getIsReu() ? "否" : model1.getIsReu());Cell cell9 = row.createCell(14);cell9.setCellValue(null == model1.getPoint() ? "0" : model1.getPoint());j += 1;System.out.println("" + j);continue;}}}out = new FileOutputStream(filepath);workBook.write(out);//最后一顶要写入输出流} catch (Exception e) {e.printStackTrace();}}
    }

    有次博文定义的实体类名字有人没看明白,这里Model1是实体类,顺便把实体类字段也放进来算了。mapper层就不写了,要什么数据查什么数据就好了

    public class Model1 implements Serializable {private static final long serialVersionUID = 7104046421371851608L;private String isLog;private String isReu;private String idno;private String point;public String getIsLog() {return isLog;}public void setIsLog(String isLog) {this.isLog = isLog;}public String getIsReu() {return isReu;}public void setIsReu(String isReu) {this.isReu = isReu;}public String getIdno() {return idno;}public void setIdno(String idno) {this.idno = idno;}public String getPoint() {return point;}public void setPoint(String point) {this.point = point;}
    }
    

java向现有的excel插入数据列相关推荐

  1. java hibernate 插入数据_[Java教程]hibernate 返回新插入数据的Id

    [Java教程]hibernate 返回新插入数据的Id 0 2015-08-28 10:00:11 例如 表明 studentInfoString sql="set set nocount ...

  2. java如何向数据库中插入数据_如何控制Java代码向数据库中插入数据

    慕哥6287543 Java程序向数据库中插入数据,代码如下:123456789101112131415161718192021222324252627282930313233343536373839 ...

  3. mysql insert 指定列_MySQL中插入数据列到特定列

    MySQL中插入数据列的命令alter table tablename add column_definition,如果不指定数据列的位置的时候,插入的列一般在最后,如 MySQL中插入数据列的命令 ...

  4. python pandas 处理并excel 插入一列新的数据

    python pandas 处理excel并插入一列新的数据 接到个需求是在表格里塞入一列新的数据,假如分页的数据(页_条数),我们这是200条/页,用的是pandas import pandas a ...

  5. 用java向mysql数据库中插入数据为空

    利用java面向对像编程,向数据库中插入数据时.遇到插入的数据为空的情况.在此做一小结: 1.数据库连接正正常 2.sql语句没有问题 3.程序没有报异常 4.代码: import java.util ...

  6. Java通过Mybatis实现批量插入数据到Oracle中

    最近项目中遇到一个问题:导入数据到后台并将数据插入到数据库中,导入的数据量有上万条数据,考虑采用批量插入数据的方式: 结合网上资料,写了个小demo,文章末尾附上demo下载地址 1.新建项目:项目目 ...

  7. java性别分类汇总,excel表格数据男女分类汇总-在Excel中,对数据清单进行“按性别分类汇总出男女......

    在Excel中,对数据清单进行"按性别分类汇总出男女... 在Excel中,对数据清单进行性别分类汇总出男女生的英语平均分"可使用AVERAGEIF函数实现. 操骤如下: 1.打开 ...

  8. Excel插入数据透视表,实现合并同类项(office2007)

    要实现对下表的同类项进行合并(office2007) 新打开一个Excel点击,"插入"->数据透视表 在选择表中,选择需要进行合并的数据 在右侧选择显示的信息

  9. java通过poi生成excel表格(自适应列宽、合并单元格后的边框添加)

    具体java通过POI读写Excel的基本使用方法可参考: POI读写Excel的基本使用 1.项目导入依赖: <!--xls--> <dependency><group ...

最新文章

  1. ribbon设置url级别的超时时间
  2. android 中文件操作模式
  3. python读音有道词典-centos7安装有道词典(不能发音和取词)
  4. java:十六进制转十进制
  5. Python pip 国内镜像大全及使用办法
  6. Maven高级之插件开发
  7. Flask 学习 (二) blueprint 示例
  8. Android camera 开发(10)---Camera 硬件介绍
  9. php 不支持curl 的解决方案
  10. IBatis.net动态SQL语句(六)
  11. web框架Django一
  12. Linux设备驱动之字符设备(一)
  13. linux amd64目录,创建基于amd64的qqforlinux的deb包
  14. 华为手机安装debug时出现无效安装和与操作系统不兼容问题解决
  15. ZAFU_2021_1_26_2021寒假个人赛第二场题解
  16. C语言到底有多强大?
  17. Cisco交换机 ——STP
  18. 信而泰OLT使用介绍-网络测试仪实操
  19. 系统的进程号PID的了解
  20. LoRa点对点系统3 与PC接口

热门文章

  1. 用 Java3D 写游戏
  2. python的split()函数!
  3. 使用Google word2vec训练我们自己的词向量模型
  4. 3. 自建DNS(bind9)
  5. 027-Mac触摸板实现窗口移动
  6. 嵌入式AI-K210篇-硬件-模型训练、部署
  7. Win11磁盘空间不足怎么清理?Win11清理磁盘空间的方法
  8. 2021-2022学年广州市育才实验学校九年级第一学期期中考试英语试题
  9. 一、什么是Nginx? Nginx的作用是什么?
  10. CUDA: 矩阵乘法优化