excel表格导入数据库数据存在则更新不存在添加
public void excelToDB() throws ParseException {
String datapath = this.getParameter("datapath");
String filePath = AppUtil.getAppAbsolutePath()+datapath;
Workbook rwb = null;
try {
// 创建输入流
InputStream stream = new FileInputStream(filePath);
// 获取Excel文件对象
rwb = Workbook.getWorkbook(stream);
} catch (Exception e) {
e.printStackTrace();
}//导入文件
Sheet rs = rwb.getSheet();//表
int rows = rs.getRows();//得到所有的行
for(int i=;i<rows;i++) {
Map<String,Object> map = null;
//如果busreqno,entno为空则添加
String busregno = rs.getCell(,i).getContents();
String entno = rs.getCell(,i).getContents();
map = yksptBuildManager.getEntityDao().findObjectBySql("sql查询语句",busregno);
if(map == null && !"".equals(entno) && entno!= null) {
map = yksptBuildManager.getEntityDao().findObjectBySql("sql查询语句",entno);
}
if(map == null) {
map = new HashMap<String,Object>();
}
//没查到就插入数据库
所导入实体类 entity = new 所导入的实体类();
boolean flag = false;
if(map.size() != ) {
entity = yksptBuildManager.getEntityDao().getById((String)map.get("所导入表id"));
flag = true;
}
entity.setBname(rs.getCell(,i).getContents());
entity.setBaddress(rs.getCell(,i).getContents());
entity.setOnesitekey(rs.getCell(,i).getContents());
entity.setTwositekey(rs.getCell(,i).getContents());
//根据下标获取excle表中经度纬度,取逗号前0后1
String s=rs.getCell(,i).getContents();
String[] ss=s.split(",");
if(!"".equals(s) && s!= null) {
entity.setCoordinatesx (ss[]);
entity.setCoordinatesy(ss[]);
}
if(!"".equals(rs.getCell(,i).getContents())&& rs.getCell(,i).getContents()!=null) {//根据excle表内数据匹配后台相对应状态,001,,002,003~~存入库内
entity.setBstreet(this.sysDictionaryManager.findDictNameByGroupkeyAndHvalue("ykspt.street",rs.getCell(,i).getContents()));
}
entity.setManage(rs.getCell(,i).getContents());
entity.setBtype(rs.getCell(,i).getContents());
entity.setWorkstation(rs.getCell(,i).getContents());
entity.setBuiltuparea(rs.getCell(,i).getContents());
entity.setUpperarea(rs.getCell(,i).getContents());
entity.setSparearea(rs.getCell(,i).getContents());
entity.setPropertyunit(rs.getCell(,i).getContents());
if(flag) {
//更新数据库
this.yksptBuildManager.update(entity);
}else {
//插入数据
this.yksptBuildManager.save(entity);
}
System.out.println(i);
}
}
2.固定路径!(路径写死)
Workbook rwb = null;
InputStream stream=null;
try {
// 创建输入流
stream = new FileInputStream("D:\\002.xls");
rwb = Workbook.getWorkbook(stream);
// 获取Excel文件对象
} catch (Exception e) {
e.printStackTrace();
}//导入文件
Sheet rs = rwb.getSheet();//表
int rows = rs.getRows();//得到所有的行
excel表格导入数据库数据存在则更新不存在添加的更多相关文章
- java实现excel表格导入数据库表
导入excel就是一个上传excel文件,然后获取excel文件数据,然后处理数据并插入到数据库的过程 一.上传excel 前端jsp页面,我的是index.jsp 在页面中我自己加入了一个下载上传文 ...
- C#解决从含身份证号码的Excel表格导入数据库的问题
用C#做从Excel表导入SQL数据库时发现从EXCEL导入的身份证号码会变成科学表示方法. 解决这个问题是比较容易的,首先,打开电子表格,选中“身份证号码”一列,右键选择“设置单元格格式”,进入单元 ...
- C#代码实现 Excel表格与Object互相转换,Excel表格导入数据库(.NET2.0 .NET4.0)
前些天在工作上遇到这个需求,在GitHub找到一个开源代码可以用,Fork了一个版本,整理一下发出来. ①.Net项目中使用Nuget安装一个 NPOI 包 https://github.com ...
- Django上传excel表格并将数据写入数据库
前言: 最近公司领导要统计技术部门在各个业务条线花费的工时百分比,而 jira 当前的 Tempo 插件只能统计个人工时.于是就写了个报表工具,将 jira 中导出的个人工时excel表格 导入数据库 ...
- Excel表格导入Mysql数据库,一行存入多条数据的前后台完整实现思路(使用mybatis框架)
现在有一张Excel表格: 存入数据库时需要这样存放: 现在需要将Excel表格做处理,将每一行拆分成多条数据存入数据库. 1.首先在前台jsp页面画一个按钮:,加入点击事件: <td styl ...
- 怎么把excel表格内的数据导入数据库?
第一种方法: 思路:想要把excel表格内的数据直接导入数据库不是那么容易,可以把excel表格另存为.csv格式的文档(特点:内容以逗号分割):然后通过一系列的文档操作函数处理成为一个二维数组,然后 ...
- 使用Excel表格导入数据到Oracle表
在工作中我们会遇到将通过数据手动录入到系统中的需求,如果数据量比较小,那么手动输入是可行的,倘若数据量很大,那么这些数据手动录入将会是一个很大的工作量,为了简化这个手动录入的操作流程,我们可以使用Ex ...
- 利用java反射机制实现读取excel表格中的数据
如果直接把excel表格中的数据导入数据库,首先应该将excel中的数据读取出来. 为了实现代码重用,所以使用了Object,而最终的结果是要获取一个list如List<User>.Lis ...
- python读取excel表格中的数据
使用python语言实现Excel 表格中的数据读取,需要用到xlrd.py模块,实现程序如下: import xlrd #导入xlrd模块 class ExcelData(): def __init ...
随机推荐
- 硬盘性能测试工具fio
如何衡量云硬盘的性能 IOPS:每秒读/写次数,单位为次(计数).存储设备的底层驱动类型决定了不同的 IOPS. 吞吐量:每秒的读写数据量,单位为MB/s. 时延:IO操作的发送时间到接收确认所经过的 ...
- Python-计算机硬件基础
预习计算机硬件基础1,CPU/内存.硬盘2,存储器 什么是编程语言什么是编程编程的目的运行程序的三大核心硬件重要:运行程序,硬件的工作过程 ------------------------------ ...
- 洛谷P4389 付公主的背包 [生成函数,NTT]
传送门 同样是回过头来发现不会做了,要加深一下记忆. 思路 只要听说过生成函数的人相信第一眼都可以想到生成函数. 所以我们要求 \[ ans=\prod \sum_n x^{nV}=\prod \fr ...
- iPhone内存溢出——黑白苹果
一旦iPhone内存长期占用过大,一关机即再难启动,如果你Home键加power键等都不行,那么可以要刷机了. 方式: 1.电脑下载ITunes,这个过程比较漫长,一系列逐渐大概3G,下载完成打开. ...
- react轮播图----react-slick
1.安装 npm install react-slick; //安装样式 npm install slick carousel; 再在App.css中引入 @import "~slick-c ...
- SwipeRefreshLayout,用最少的代码定制最美的上下拉刷新样式
下拉刷新框架其实有很多,而且质量都比较高.但是在日常开发中,每一款产品都会有一套自己独特的一套刷新样式.相信有很多小伙伴在个性化定制中都或多或少的遇到过麻烦.今天我就给大家推荐一个在定制方面很出彩的一 ...
- 在XIB 或者 SB 上面 实现 半透明的背景上添加UILabel是文字不透明
设透明背景的时候直接设置RGB值 然后设置Opacity即可
- STM32L476应用开发之一:初次使用
今天终于收到了期待已久的NUCLEO-F412ZG,感谢电子发烧友论坛!多年以来基本都是在STM32平台上做一些设计开发工作.但是低功耗的基本没用过,这次要做便携式设备才对这方面有所接触,正好这时电子 ...
- Oracle Blob查询和插入
注:本文来源于<Oracle Blob查询和插入> 插入 UPDATE cmm05 SET OUTFILE = to_blob('12345690'): 查询: SELECT utl_ra ...
- [原著]java或者Js 代码逻辑来处理 突破 oracle sql “IN”长度的极限的问题
注:本文出自:博主自己研究验证可行 [原著]java或者Js 代码逻辑来处理 突破 oracle sql "IN"长度的极限的问题 在很多的时候 使用 select ...