参考文档

一、需求

存在一个camera表,表中有一个字段叫点位编号,现需要修改该点位编号,用户提供了一个execl表,如下图所示,第2列为原编号,第5列为现编号:

二、解决思路

编码读取execl表格数据,将新的编码通过sql语句保存到camera表中,因为camera表有未使用的字段且原来的编码是唯一的,所以我这里就根据原来的编码字段来更新(update)现编码保存的字段;

三、引入相关依赖
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-collections4 --><dependency><groupId>org.apache.commons</groupId><artifactId>commons-collections4</artifactId><version>4.1</version></dependency><!-- https://mvnrepository.com/artifact/org.apache.poi/poi --><dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>3.17-beta1</version></dependency><!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml --><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>3.17-beta1</version></dependency><!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml-schemas --><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml-schemas</artifactId><version>3.17-beta1</version></dependency><!-- https://mvnrepository.com/artifact/org.apache.xmlbeans/xmlbeans --><dependency><groupId>org.apache.xmlbeans</groupId><artifactId>xmlbeans</artifactId><version>2.6.0</version></dependency>

四、编码

4.1、创建与excel表对应的实体类

package com.qst.parsexml.domain;public class HaiXinCamera {private String name;private String extcameraid;private String ip;private String port;private String crossing_number;public String getName() {return name;}public void setName(String name) {this.name = name;}public String getExtcameraid() {return extcameraid;}public void setExtcameraid(String extcameraid) {this.extcameraid = extcameraid;}public String getIp() {return ip;}public void setIp(String ip) {this.ip = ip;}public String getPort() {return port;}public void setPort(String port) {this.port = port;}public String getCrossing_number() {return crossing_number;}public void setCrossing_number(String crossing_number) {this.crossing_number = crossing_number;}
}

4.2、新建一个ReadExecl.java类,创建main函数

package com.qst.parsexml.test;import com.qst.parsexml.service.execl.ParseServiceExecl_wangcheng;
import java.io.IOException;
import java.util.Scanner;public class ReadExecl {public static void main(String[] args) {System.out.println("请输入excel文件路径: [execl文件路径] ");Scanner scanner = new Scanner(System.in);String[] strs = scanner.nextLine().split("\\s+");String filepath = strs[0];try {//将提供的execl文档中的点位编码保存到camera表中的crossing_number字段中ParseServiceExecl_wangcheng.parseExecl(filepath);} catch (IOException e) {e.printStackTrace();}}
}

4.3、新建一个ParseServiceExecl_wangcheng.java类,写相关逻辑

package com.qst.parsexml.service.execl;import java.io.*;
import java.util.ArrayList;
import java.util.List;import com.qst.parsexml.domain.HaiXinCamera;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.DateUtil;
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;public class ParseServiceExecl_wangcheng {public static void parseExecl(String filepath) throws IOException{Workbook wb =null;Sheet sheet = null;Row row = null;List<HaiXinCamera> list = null;String cellData = null;//读取Excel文件wb = readExcel(filepath);//如果文件不为空if(wb != null){//用来存放表中数据list = new ArrayList<HaiXinCamera>();//获取第一个sheetsheet = wb.getSheetAt(0);//获取最大行数int rownum = sheet.getPhysicalNumberOfRows();//获取第一行row = sheet.getRow(0);//获取最大列数int colnum = row.getPhysicalNumberOfCells();//循环行for (int i = 1; i<rownum; i++) {HaiXinCamera camera = new HaiXinCamera();row = sheet.getRow(i);if(row !=null){//循环列for (int j=0;j<colnum;j++){cellData = (String) getCellFormatValue(row.getCell(j));switch (j){case 0:camera.setName(cellData);break;case 1:camera.setExtcameraid(cellData);break;case 2:camera.setIp(cellData);break;case 3:camera.setPort(cellData);break;case 4:camera.setCrossing_number(cellData);break;default:break;}}//放入集合list.add(camera);}else{break;}}}//定义一个文件,用来存数据;System.out.println("number of camera: "+list.size());String fileName = filepath.substring(0, filepath.length()-4)+"_update_camera"+".sql";PrintWriter ps = new PrintWriter(new BufferedWriter(new OutputStreamWriter(new FileOutputStream(fileName),"UTF-8")));if(list.size() > 0){//遍历解析出来的listfor (HaiXinCamera camera : list ) {String name = camera.getName() == null ? "null" : "'" + camera.getName() + "'";String extcameraid = camera.getExtcameraid() == null ? "null" : "'" + camera.getExtcameraid() + "'";String ip = camera.getIp() == null ? "null" : "'" + camera.getIp() + "'";String port = camera.getPort() == null ? "null" : "'" + camera.getPort() + "'";String crossingNumber = camera.getCrossing_number() == null ? "null" : "'" + camera.getCrossing_number() + "'";String strSQL = String.format("UPDATE camera set crossing_number= %s WHERE extcameraid = %s;",crossingNumber, extcameraid);ps.println(strSQL);}}ps.close();}//读取excel@SuppressWarnings("resource")public static Workbook readExcel(String filePath){Workbook wb = null;if(filePath==null){return null;}//文件后缀名String extString = filePath.substring(filePath.lastIndexOf("."));InputStream is = null;try {is = new FileInputStream(filePath);//如果文件后缀名为xlsif(".xls".equals(extString)){return wb = new HSSFWorkbook(is);}//如果文件后缀名为xlsxelse if(".xlsx".equals(extString)){return wb = new XSSFWorkbook(is);}else{return wb = null;}} catch (IOException e) {e.printStackTrace();}return wb;}@SuppressWarnings("deprecation")public static Object getCellFormatValue(Cell cell){Object cellValue = null;if(cell!=null){//判断cell类型switch(cell.getCellType()){case Cell.CELL_TYPE_NUMERIC:{cellValue = String.valueOf(cell.getNumericCellValue());break;}case Cell.CELL_TYPE_FORMULA:{//判断cell是否为日期格式if(DateUtil.isCellDateFormatted(cell)){//转换为日期格式YYYY-mm-ddcellValue = cell.getDateCellValue();}else{//数字cellValue = String.valueOf(cell.getNumericCellValue());}break;}case Cell.CELL_TYPE_STRING:{cellValue = cell.getRichStringCellValue().getString();break;}default:cellValue = "";}}else{cellValue = "";}return cellValue;}
}

4.4、结果:
执行代码,输入excel文件所在的路径,如C:\Users\MECHREVO-PC\Desktop\test.xlsx,回车之后就会在该路径下生成以sql结尾的文件;本文的输出结果如图所示:

Java 读取EXCEL表格中的数据,将数据转为SQL语句相关推荐

  1. Java读取Excel表格中的数据

    文章目录 前言 一.添加jar包文件 1.在Eclipse工程下新建lib文件夹 2.复制jar包 3.将jar包粘贴到Eclipse中 4.配置构建路径 二.案例代码 1.新建类 2.获取Excel ...

  2. Java读取Excel表格中的数据并插入到数据库中

    这里写自定义目录标题 一.查看Excel表格 二.数据库中创建表 三.添加maven依赖 四.创建实体类 五.dao层接口添加新增方法 六.service层 1.service层接口 2.接口实现类 ...

  3. MATLAB读取excel表格中指定位置的数据

    >>> help xlsread xlsread - 读取 Microsoft Excel 电子表格文件 此 MATLAB函数读取名为 filename的Microsoft Exce ...

  4. JAVA读取excel表格中的数据,.xlsm文件或者.xlsx文件。

    首先第一步引入jar包或者引入依赖.用的是springboot测试环境.所以我引用的依赖: <dependency><groupId>org.apache.poi</gr ...

  5. Java读取Excel表格中的图片

    前言 excel的图片并不是直接嵌入单元格中的,但是在插入图片时可以设置图片格式,将图片放入单元格中,代码就可以根据行号与列号定位到响应的图片. 读取图片 不同版本的excel有不同的拓展名(.xls ...

  6. python读取excel表格-python读取excel表格中的数据

    使用python语言实现Excel 表格中的数据读取,需要用到xlrd.py模块,实现程序如下: import xlrd #导入xlrd模块 class ExcelData(): def __init ...

  7. Java读取Excel表格以及读取数字列转为文本的解决办法

    Java读取Excel表格代码和把数字列转为文本的解决办法. 所需 jar 包:dom4j-1.6.1.jar ,poi-3.8-20120326.jar,poi-ooxml-3.8-20120326 ...

  8. java实现读取excel表格中的数据,兼容xls和xlsx

    前言 利用 java 实现读取 excel 表格中的数据,兼容 xls 与 xlsx 格式,不用额外做区分,写不同的实现方法. 引入的依赖包 <dependency><groupId ...

  9. java 操作 word 表格和样式,java读取word表格中的表格 java如何读取word中的excel表格数据...

    Java 利用poi 可以直接读取word中的表格保持样式生1.读取word 2003及word 2007需要的jar包 读取 2003 版本(.doc)的word文件相对来说比较简单,只需要 poi ...

最新文章

  1. mysql主备模型_MySQL主从复制 - 基于二进制日志(理论篇)
  2. larvare数据库引入php_PHP全栈学习笔记6
  3. CodeForces - 1408E Avoid Rainbow Cycles(思维+最大生成树)
  4. 从零开始学前端:CSS盒子模型属性 --- 今天你学习了吗?(CSS:Day14)
  5. 员工为什么缺乏执行力?
  6. 网站用户的生命周期价值
  7. php 密码加密方法
  8. 数学建模论文书写总结
  9. ESP8266的AT指令集
  10. CentOS安装打字游戏,typespeed
  11. 我的世界服务器淬炼系统,我的世界淬炼指令 | 手游网游页游攻略大全
  12. jmeter获取上一个接口的返回值作为下一个接口的传入参数
  13. c语言中ch的作用,C语言中IN(ch,OP)是什么意思
  14. 传遍朋友圈的Workflow,到底是什么鬼
  15. Day28-Linux入门01
  16. 国际标准刊号(ISSN)
  17. GIS技术在林业管理应用中有哪些功能?
  18. Matlab代码生成之SIL/PIL测试
  19. bash命令使用详解
  20. oracle增量备份level0,ORACLE RMAN增量备份经典理解

热门文章

  1. 毕业设计 stm32便携用电功率统计系统 -物联网 嵌入式 单片机
  2. 【Git 系列】一个超好用的命令你会用吗?
  3. 论文阅读06——《CaEGCN: Cross-Attention Fusion based Enhanced Graph Convolutional Network for Clustering》
  4. 2019年12月电子学会图形化三级题目解析含答案:合作画画
  5. 浅谈示波器X-Y模式 示波器触发模式及使用
  6. 最全前端面试问题及答案总结(转载自hawx1993)
  7. 二手书交易系统用例图
  8. 二元选择模型:Probit还是Logit?
  9. python股票成交明细_Python股票成交价格-买卖额分布图(三)
  10. 炼丹志 | 2021显卡挑选指南