加入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数据到数据库的更多相关文章

  1. 如何使用NPOI 导出到excel和导入excel到数据库

    近期一直在做如何将数据库的数据导出到excel和导入excel到数据库. 首先进入官网进行下载NPOI插件(http://npoi.codeplex.com/). 我用的NPOI1.2.5稳定版. 使 ...

  2. 解决将Excel表导入到SQL Server数据库时出现Text was truncated or one or more characters had no match in the target code错误

    编写python爬虫程序可以在电商.旅游等网站上爬取相关评论数据,这些数据可以用于词云制作.感情词分析.提取关键词等,也可以将爬取下来的数据以自己的方式进行展示.评论数据爬取下来后,就要考虑怎样入库, ...

  3. 使用JWPL (Java Wikipedia Library)操作维基百科数据

    使用JWPL (Java Wikipedia Library)操作维基百科数据 1. JWPL介绍 JWPL(Java Wikipedia Library)是一个开源的访问wikipeida数据的Ja ...

  4. linux mysql 数据库操作导入导出 数据表导出导入

    linux mysql 数据库操作导入导出 数据表导出导入 1,数据库导入 mysql -uroot -p show databases; create database newdb; use 数据库 ...

  5. oracle中导入导出数据备份数据库

    原文:oracle中导入导出数据备份数据库 数据库所在位置                         将数据导出到的文件名                    用户名 备份数据库 :exp c ...

  6. java 使用POI批量导入excel数据

    一.定义 Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能. 二.所需jar包: 三.简单的一个读取e ...

  7. Dynamic CRM 2013学习笔记(三十一)自定义用excel批量导入实体数据

    有一个实体的子表数据量太大,于是客户想用execel来导入实体数据.首先想到的是用系统自带的Import Data,客户嫌太麻烦,比如lookup字段要做map等. 下面是具体的实现步骤: 一.定义e ...

  8. java poi分批次导入Excel

    最近换了新工作,公司要求导入Excel要分批次导入,并且是多线程的情况下执行导入,查了很多资料,没看到比较复合的,就打算自己写一个吧,可能有不足,希望指出. 上面说到多线程,这边就不贴出代码了,具体思 ...

  9. Django上传excel表格并将数据写入数据库

    前言: 最近公司领导要统计技术部门在各个业务条线花费的工时百分比,而 jira 当前的 Tempo 插件只能统计个人工时.于是就写了个报表工具,将 jira 中导出的个人工时excel表格 导入数据库 ...

随机推荐

  1. 用Jquery Widgets Factory写自己的表格控件——AFGrid(支持增、删、改)

    一,Jquery Widget Factory介绍 官网地址 Demo:http://jqueryui.com/widget/ API:http://api.jqueryui.com/jQuery.w ...

  2. webpack的学习

    什么是webpack? 他有什么优点? 首先对于很多刚接触webpack人来说,肯定会问webpack是什么?它有什么优点?我们为什么要使用它?带着这些问题,我们来总结下如下: Webpack是前端一 ...

  3. python 传入参数返回的时候好像有些时候会出现莫名其妙的循环

    def handle_field(name, s_len, s): #some code #return s would error but return not.... #return s for ...

  4. suse下设置IP的两种方法

    /Files/yzhxhwt/DB_51aspx.rar 第一种SUSE Linux IP设置方法ifconfig eth0 192.168.1.22 netmask 255.255.255.0 up ...

  5. MySQL · 引擎特性 · InnoDB 崩溃恢复过程

    MySQL · 引擎特性 · InnoDB 崩溃恢复过程 在前面两期月报中,我们详细介绍了 InnoDB redo log 和 undo log 的相关知识,本文将介绍 InnoDB 在崩溃恢复时的主 ...

  6. ANT 发布项目中 build.xml 文件的详细配置

    xml 代码 <?xml version="1.0" encoding="UTF-8"?> <!-- name:对应工程名字 default: ...

  7. hdu5248 序列变换

    百度之星的题.其实最简单的方法是二分答案,我竟然没想到,直接去想O(n)的去了,最后导致滚粗... 题意就是给一个数列,要求把它处理成递增序列. 首先我想到了O(n^2)的算法,然后再优化成O(n)过 ...

  8. cefSharp在XP下使得程序崩溃记录

    前言:这是一个奇葩的问题,到现在自己还没有搞明白问题出现在哪里,但是从问题总算是解决了,希望看到此文章的大牛,如果知道问题出在什么地方,可以告知一下. [一个在XP系统下面应用程序崩溃问题] 资源: ...

  9. 高手就用Chrome不安全模式

    背景:最近玩CSS3和HTML玩得不可开交. 既然要用浏览器的话,就最好在浏览器中设置一个主页,以前徒简洁就一直用百度的搜索页做主页,但是现在百度邪恶的各种广告实在让我恶心,而且一些文献资料中国网站上 ...

  10. 二.JSP开发过程中遇到的问题及解决

    一.开发环境问题 问题一:Failed to load the JNI shared library 启动Eclipse时弹出“Failed to load the JNI shared librar ...