java 对excel操作导入excel数据到数据库
加入jar包jxl.jar
===================services层掉用工具类====================================
// 导入
public List<TempXskh> inputExcel(Xskh xskhs, String url) {
List<TempXskh> listadd = new ArrayList<TempXskh>();
TempXskh xskh = null;
int rsRows = 0;
String guidUser = xskhs.getId();// 当前用户登录的id
Integer pubRowIndex=0;
try {
InputStream is = new FileInputStream(url);
jxl.Workbook rwb = Workbook.getWorkbook(is);
// 获取第一张Sheet表
Sheet rs = rwb.getSheet(0);
// 获取Sheet表中所包含的总行数,
rsRows = rs.getRows();
// 定位(简称)在excel中以简称为标题的位置
Map<Object, Object> map = Comm.getExcelIndex2("简称", url);
Integer rowIndexAname = (Integer) map.get("rowIndex");
Integer columnIndexAname = (Integer) map.get("columnIndex");
pubRowIndex=rowIndexAname;
// 定位(公司)
Integer columnIndexComplay = Comm.getExcelIndex2("公司", url,pubRowIndex);
Integer rowIndexComplay = pubRowIndex;
if ("null".equals(rowIndexComplay) || rowIndexComplay == null) {
System.out.println("excel文件必须包含”公司“标题");
xskh = new TempXskh();
xskh.setAname("excel文件必须包含以'公司'为标题的记录!");
xskh.setStatus(-2);
listadd.add(xskh);
return listadd;
}
// 定位(固定电话)
Integer columnIndexPhone1 = Comm.getExcelIndex2("固定电话", url,pubRowIndex);
Integer rowIndexPhone1 = pubRowIndex;
// 定位(移动电话)
Integer columnIndexMobeliPhone = Comm.getExcelIndex2("移动电话", url,pubRowIndex);
Integer rowIndexMobeliPhone =pubRowIndex;
// 定位(传真)
Integer columnIndexFax = Comm.getExcelIndex2("传真", url,pubRowIndex);
Integer rowIndexFax =pubRowIndex;
// 定位(地址)
Integer columnIndexAddress = Comm.getExcelIndex2("地址", url,pubRowIndex);
Integer rowIndexAddress = pubRowIndex;
if ("null".equals(rowIndexAddress) || rowIndexAddress == null) {
System.out.println("excel没地址!");
xskh = new TempXskh();
xskh.setAname("excel文件必须包含以'地址'为标题的记录!");
xskh.setStatus(-2);
listadd.add(xskh);
return listadd;
}
// 定位(网站)
Integer columnIndexSite = Comm.getExcelIndex2("网址", url,pubRowIndex);
Integer rowIndexSite = pubRowIndex;
// 定位(email)
Integer columnIndexMail = Comm.getExcelIndex2("邮箱", url,pubRowIndex);
Integer rowIndexMail =pubRowIndex;
// 定位(qq)
Integer columnIndexqq = Comm.getExcelIndex2("qq", url,pubRowIndex);
Integer rowIndexqq = pubRowIndex;
// 定位(联系人)
Integer columnIndexPeple = Comm.getExcelIndex2("联系人", url,pubRowIndex);
Integer rowIndexPeple = pubRowIndex;
if ("null".equals(rowIndexPeple) || rowIndexPeple == null) {
System.out.println("excel没有联系人");
xskh = new TempXskh();
xskh.setAname("excel文件必须包含以'联系人'为标题的记录!");
xskh.setStatus(-2);
listadd.add(xskh);
return listadd;
}
// 定位(联系人部门)
Integer columnIndexDeparetment = Comm.getExcelIndex2("联系人部门", url,pubRowIndex);
Integer rowIndexDeparetment =pubRowIndex;
// 定位(联系人职务)
Integer columnIndexBusiness = Comm.getExcelIndex2("联系人职务", url,pubRowIndex);
Integer rowIndexBusiness = pubRowIndex;
// 定位(联系人电话)
Integer columnIndexphone2 = Comm.getExcelIndex2("联系人电话", url,pubRowIndex);
Integer rowIndexphone2 =pubRowIndex;
/**
* 标题不在同一行
*/
if (rowIndexComplay != pubRowIndex
|| rowIndexComplay != rowIndexPeple) {
System.out.println("excel格式不正确!!");
xskh = new TempXskh();
xskh.setAname("excel文件格式不对,必须标题在同一行!");
xskh.setStatus(-2);
listadd.add(xskh);
return listadd;
}
// 从标题下一行开始取数据
System.out.println(rsRows);
for (int j = pubRowIndex + 1; j < rsRows; j++) {
xskh = new TempXskh();
// excel不存在简称
if ("null".equals(columnIndexAname) || columnIndexAname == null) {
xskh.setAname(null);
} else {
Cell aname = rs.getCell(columnIndexAname, j); // (简称)第几行第几列(前门是列,后面是行)
xskh.setAname(aname.getContents().toString());
}
// excel不存在固定电话
if ("null".equals(rowIndexPhone1) || rowIndexPhone1 == null) {
xskh = new TempXskh();
xskh.setTel(null);
} else {
Cell tel = rs.getCell(columnIndexPhone1, j);
xskh.setTel(tel.getContents().toString());
}
// excel不存在移动电话
if ("null".equals(rowIndexMobeliPhone)
|| rowIndexMobeliPhone == null) {
xskh = new TempXskh();
xskh.setMobile(null);
} else {
Cell mobele = rs.getCell(columnIndexMobeliPhone, j);
xskh.setMobile(mobele.getContents().toString());
}
// excel不存在传真
if ("null".equals(rowIndexFax) || rowIndexFax == null) {
xskh = new TempXskh();
xskh.setFax(null);
} else {
Cell fax = rs.getCell(columnIndexFax, j);
xskh.setFax(fax.getContents().toString());
}
// excel不存在网站
if ("null".equals(rowIndexSite) || rowIndexSite == null) {
xskh = new TempXskh();
xskh.setWww(null);
} else {
Cell site = rs.getCell(columnIndexSite, j);
xskh.setWww(site.getContents().toString());
}
// excel不存在email
if ("null".equals(rowIndexMail) || rowIndexMail == null) {
xskh = new TempXskh();
xskh.setEmail(null);
} else {
Cell mail = rs.getCell(columnIndexMail, j);
xskh.setEmail(mail.getContents().toString());
}
// excel不存在qq
if ("null".equals(rowIndexqq) || rowIndexqq == null) {
xskh = new TempXskh();
xskh.setQq(null);
} else {
Cell qq = rs.getCell(columnIndexqq, j);
xskh.setQq(qq.getContents().toString());
}
// excel不存在联系人部门
if ("null".equals(rowIndexDeparetment)
|| rowIndexDeparetment == null) {
xskh = new TempXskh();
xskh.setKf_peo_bm(null);
} else {
Cell bm = rs.getCell(columnIndexDeparetment, j);
xskh.setKf_peo_bm(bm.getContents().toString());
}
// excel不存在联系人电话
if ("null".equals(rowIndexphone2) || rowIndexphone2 == null) {
xskh = new TempXskh();
xskh.setKf_peo_tel(null);
} else {
Cell ptel = rs.getCell(columnIndexphone2, j);
xskh.setKf_peo_tel(ptel.getContents().toString());
}
// excel不存在联系人职务
if ("null".equals(rowIndexBusiness) || rowIndexBusiness == null) {
xskh = new TempXskh();
xskh.setKf_peo_zhiwei(null);
} else {
Cell Business = rs.getCell(columnIndexBusiness, j);
xskh.setKf_peo_zhiwei(Business.getContents().toString());
}
Cell complay = rs.getCell(columnIndexComplay, j); // (公司)第几行第几列(前门是列,后面是行)
Cell adress = rs.getCell(columnIndexAddress, j);// 地址
Cell peple = rs.getCell(columnIndexPeple, j);// 联系人
String com = complay.getContents();
String addr = adress.getContents();
String ple = peple.getContents();
if ("null".equals(com) || "".equals(com) || com == ""
|| com == null) {
com = null;
}
if ("null".equals(addr) || "".equals(addr) || addr == ""
|| addr == null) {
addr = null;
}
if ("null".equals(ple) || "".equals(ple) || ple == ""
|| ple == null) {
ple = null;
}
xskh.setAname_long(com);
xskh.setAddr(addr);
xskh.setKf_peo(ple);
xskh.setAguid(Comm.getAguid());// 设置主键
// Integer pxxh=this.excelDao.getMaxPxxh();
xskh.setGuid_user(guidUser);
xskh.setGuid_lastupd(guidUser);
// xskh.setPxxh(pxxh+1);
// xskh.setGuid_lastupd(Comm.getDate());//导入日期
xskh.setString_create(Comm.getDate());// 导入日期
// xskh.setTimeOfLastUpdate(Comm.getDate());//最后更新
xskh.setRemark(SqliteDBServiceImpl.REMARK);
xskh.setStatus(0);
this.excelDao.inputTempExcel(xskh);// 添加到数据库方法(dao)
return listadd;
}
===================自己写的工具类=====================================
// 定位excel标题位置(纵向定位)
@SuppressWarnings("unused")
public static Map<Object, Object> getExcelIndex(String name, String url) {
int rsRows = 0;
Map<Object, Object> map = new HashMap<Object, Object>();
try {
InputStream is = new FileInputStream(url);//excel文件路径
jxl.Workbook rwb = Workbook.getWorkbook(is);
// 获取第一张Sheet表
Sheet rs = rwb.getSheet(0);
// 获取Sheet表中所包含的总行数,
rsRows = rs.getRows();
for (int i = 0; i < rsRows; i++) {
Cell[] cell = rs.getRow(i);// 获取某一行的所有单元格,返回的是单元格对象数组
// 获取某一行的所有单元格
for (int j = 0; j < cell.length; j++) {
Cell[] cell2 = rs.getColumn(j);
// 获取某一行的具体列单元格
for (int k = 0; k < cell2.length; k++) {
if (name.trim().equalsIgnoreCase(
cell[j].getContents().trim())) {
Cell c = rs.getCell(j, i); // 第几行第几列(前门是列,后面是行)
int rowIndex = i;// 行
int columnIndex = j;// 列
map.put("rowIndex", rowIndex);
map.put("columnIndex", columnIndex);
break;
}
}
break;
}
break;
}
} catch (Exception e) {
e.printStackTrace();
System.out.println("定位excel位置出错!!");
}
return map;
}
// 定位excel标题位置(横向定位)
@SuppressWarnings("unused")
public static Map<Object, Object> getExcelIndex2(String name, String url) {
int rsRows = 0;
Map<Object, Object> map = new HashMap<Object, Object>();
try {
InputStream is = new FileInputStream(url);
jxl.Workbook rwb = Workbook.getWorkbook(is);
// 获取第一张Sheet表
Sheet rs = rwb.getSheet(0);
// 获取Sheet表中所包含的总行数,
rsRows = rs.getRows();
for (int i = 0; i < rsRows; i++) {
Cell[] cell = rs.getRow(i);// 获取某一行的所有单元格,返回的是单元格对象数组
// 获取某一行的所有单元格
for (int j = 0; j < cell.length; j++) {
Cell[] cell2 = rs.getRow(j);
// 获取某一行的具体列单元格
for (int k = 0; k < cell2.length; k++) {
if (name.trim().equalsIgnoreCase(
cell[k].getContents().trim())) {
Cell c = rs.getCell(j, k); // 第几行第几列(前门是列,后面是行)
int rowIndex = j;// 行
int columnIndex = k;// 列
map.put("rowIndex", rowIndex);
map.put("columnIndex", columnIndex);
break;
}
}
break;
}
break;
}
} catch (Exception e) {
e.printStackTrace();
System.out.println("定位excel位置出错!!");
}
return map;
}
// 定位excel标题位置(横向定位)
@SuppressWarnings("unused")
public static Integer getExcelIndex2(String name, String url,
Integer rowIndex) {
Integer columnIndex = 0;
try {
InputStream is = new FileInputStream(url);
jxl.Workbook rwb = Workbook.getWorkbook(is);
// 获取第一张Sheet表
Sheet rs = rwb.getSheet(0);
Cell[] cell = rs.getRow(rowIndex);// 获取某一行的所有单元格,返回的是单元格对象数组
// 获取某一行的所有单元格
for (int j = 0; j < cell.length; j++) {
Cell[] cell2 = rs.getRow(j);
// 获取某一行的具体列单元格
for (int k = 0; k < cell2.length; k++) {
if (name.trim().equalsIgnoreCase(
cell[k].getContents().trim())) {
Cell c = rs.getCell(j, k); // 第几行第几列(前门是列,后面是行)
columnIndex = k;// 列
break;
}
}
break;
}
} catch (Exception e) {
e.printStackTrace();
System.out.println("定位excel位置出错!!");
}
return columnIndex;
}
java 对excel操作导入excel数据到数据库的更多相关文章
- 如何使用NPOI 导出到excel和导入excel到数据库
近期一直在做如何将数据库的数据导出到excel和导入excel到数据库. 首先进入官网进行下载NPOI插件(http://npoi.codeplex.com/). 我用的NPOI1.2.5稳定版. 使 ...
- 解决将Excel表导入到SQL Server数据库时出现Text was truncated or one or more characters had no match in the target code错误
编写python爬虫程序可以在电商.旅游等网站上爬取相关评论数据,这些数据可以用于词云制作.感情词分析.提取关键词等,也可以将爬取下来的数据以自己的方式进行展示.评论数据爬取下来后,就要考虑怎样入库, ...
- 使用JWPL (Java Wikipedia Library)操作维基百科数据
使用JWPL (Java Wikipedia Library)操作维基百科数据 1. JWPL介绍 JWPL(Java Wikipedia Library)是一个开源的访问wikipeida数据的Ja ...
- linux mysql 数据库操作导入导出 数据表导出导入
linux mysql 数据库操作导入导出 数据表导出导入 1,数据库导入 mysql -uroot -p show databases; create database newdb; use 数据库 ...
- oracle中导入导出数据备份数据库
原文:oracle中导入导出数据备份数据库 数据库所在位置 将数据导出到的文件名 用户名 备份数据库 :exp c ...
- java 使用POI批量导入excel数据
一.定义 Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能. 二.所需jar包: 三.简单的一个读取e ...
- Dynamic CRM 2013学习笔记(三十一)自定义用excel批量导入实体数据
有一个实体的子表数据量太大,于是客户想用execel来导入实体数据.首先想到的是用系统自带的Import Data,客户嫌太麻烦,比如lookup字段要做map等. 下面是具体的实现步骤: 一.定义e ...
- java poi分批次导入Excel
最近换了新工作,公司要求导入Excel要分批次导入,并且是多线程的情况下执行导入,查了很多资料,没看到比较复合的,就打算自己写一个吧,可能有不足,希望指出. 上面说到多线程,这边就不贴出代码了,具体思 ...
- Django上传excel表格并将数据写入数据库
前言: 最近公司领导要统计技术部门在各个业务条线花费的工时百分比,而 jira 当前的 Tempo 插件只能统计个人工时.于是就写了个报表工具,将 jira 中导出的个人工时excel表格 导入数据库 ...
随机推荐
- clearfix 清除浮动的问题
今天看一篇博文,发现其实有很多方法实现清除浮动,各有利弊 采用伪类:after进行后续空制的高度位零的伪类层清除 采用CSS overflow:auto的方式撑高 采用CSS overflow:hid ...
- (六)6.18 cnn 的反向传导算法
本文主要内容是 CNN 的 BP 算法,看此文章前请保证对CNN有初步认识,可参考Neurons Networks convolutional neural network(cnn). 网络表示 CN ...
- HDU 2026 首字母变大写
#include<cstdio> #include<cstring> #include<algorithm> using namespace std; int ma ...
- MatrixTurn源码阅读
在看cacheAsBitmap 相关资料时,找到bit101的一篇文章,http://www.bytearray.org/?p=290 全文如下: One of the feature I would ...
- 【转】Ubuntu 12.04 安装JDK 8和Eclipse
原文网址:http://blog.csdn.net/yechaodechuntian/article/details/24853813 Ubuntu 12.04 下安装 JDK8 方法一:(缺点是安装 ...
- mysql初识之数据文件及其他文件
在mysql中数据文件存放于在my.cnf中datadir指定的路径,使用的表引擎不同产生的文件格式.表文件个数也会有所差异.mysql的表引擎有多种,表的扩展名也不一样,如innodb用“ .ibd ...
- Bootstrap--全局CSS样式之栅格系统
Bootstrap 提供了一套响应式.移动设备优先的流式栅格系统,随着屏幕或视口(viewport)尺寸的增加,系统会自动分为最多12列.它包含了易于使用的预定义类,还有强大的mixin 用于生成更具 ...
- Android NDK OpenCV C++
NDK中的OpenCV http://blog.csdn.net/yanzi1225627/article/details/8525720
- slidingMenu默认显示菜单
关键词:slidingmenu 默认 显示 打开 菜单 showMenu toggle 问题:要在Activity一打开就显示slidingmenu. 解决: 搜索“slidingmenu 默认打开” ...
- PHP中的session
来自博客园 1.初始化(使用session前都要使用,一个页面用一个就可以了) session_start(); 2.保存 $_SESSION[$sessionName]=$value; (value ...