原文地址:http://blog.csdn.net/zczzsq/article/details/16803349

本实例做的是读取execl(只能读取.xls的execl,即只能读取03版的),如果是.xlsx类型的话 手工转化一下即可,应用的jar包是apache的poi系类的jar包和ojdbc14.jar的数据库连接包。

poi的jar报的官方下载地址:http://poi.apache.org/

还需要说明是对execl的读取java可以通过横坐标和纵坐标读取到execl的每个单元格,

根据个人情况看需要读取execl表格中的那些内容,下面这个代码是通用的读取execl的代码

  1. for (int numSheet = 0; numSheet < workBook.getNumberOfSheets(); numSheet++) {
  2. Sheet sheet = workBook.getSheetAt(numSheet);
  3. if (sheet == null) {
  4. continue;
  5. }
  6. // 循环行Row
  7. for (int rowNum = 1; rowNum <= sheet.getLastRowNum(); rowNum++) {
  8. Row row = sheet.getRow(rowNum);
  9. if (row == null) {
  10. continue;
  11. }
  12. // 循环列Cell
  13. ArrayList<String> arrCell =new ArrayList<String>();
  14. for (int cellNum = 0; cellNum <= row.getLastCellNum(); cellNum++) {
  15. Cell cell = row.getCell(cellNum);
  16. if (cell == null) {
  17. continue;
  18. }
  19. publicExcel(cell); //publicExcel是下文中execl数据格式的转换,返回值即每个单元格的值                        }
  20. }
  21. }

一个完整的事例类

  1. public class ExeclOperate {
  2. public static void main(String[] args) throws Exception {
  3. ExeclOperate e=new ExeclOperate();
  4. e.getExcel();
  5. System.out.println("导入完成!");
  6. }
  7. /**
  8. * 用于连接oracle数据库的方法
  9. * 只需修改中的参数getConnection("url","用户名","密码");
  10. */
  11. public Connection conn(){
  12. try {
  13. //第一步:加载JDBC驱动
  14. Class.forName("oracle.jdbc.driver.OracleDriver");
  15. //第二步:创建数据库连接
  16. Connection con =DriverManager.getConnection("jdbc:oracle:thin:@192.168.1.156:1521:tianjiao", "E5AVPS", "E5AVPS");
  17. return con;
  18. }catch(ClassNotFoundException cnf){
  19. System.out.println("driver not find:"+cnf);
  20. return null;
  21. }catch(SQLException sqle){
  22. System.out.println("can't connection db:"+sqle);
  23. return null;
  24. }
  25. catch (Exception e) {
  26. System.out.println("Failed to load JDBC/ODBC driver.");
  27. return null;
  28. }
  29. }
  30. /**
  31. * “95509”咨询清单  的读取
  32. * @throws Exception
  33. */
  34. public void getExcel() throws Exception {
  35. // 创建对Excel工作簿文件的引用
  36. HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream("D:\\1.xls"));
  37. // 创建对工作表的引用。
  38. // 在Excel文档中,第一张工作表的缺省索引是0,
  39. // 读取左上端单元
  40. for (int i = 0; i < workbook.getNumberOfSheets(); i++) {// 循环sheet
  41. if(workbook.getSheetAt(i).getPhysicalNumberOfRows()>0){
  42. HSSFSheet childSheet = workbook.getSheetAt(i);
  43. for(int rowi=1;rowi<400000;rowi++){
  44. //System.out.println(childSheet.getRow(rowi).getCell(1).equals(""));
  45. if(childSheet.getRow(rowi).getCell(0).equals("") || childSheet.getRow(rowi).getCell(0)==null) break;
  46. String cell1=this.publicExcel(childSheet.getRow(rowi).getCell(0));
  47. if(cell1==null) break;
  48. //对于double类型的数据装换为string类型进行字符串截取 只取整数。
  49. cell1=cell1.substring(0, cell1.length()-2);
  50. String cell2=this.publicExcel(childSheet.getRow(rowi).getCell(1));
  51. String cell3=this.publicExcel(childSheet.getRow(rowi).getCell(2));
  52. String cell4=this.publicExcel(childSheet.getRow(rowi).getCell(3));
  53. String cell5=this.publicExcel(childSheet.getRow(rowi).getCell(4));
  54. String cell6=this.publicExcel(childSheet.getRow(rowi).getCell(5));
  55. cell6=cell6.substring(0, cell6.length()-2);
  56. //拼装插入数据库的sql
  57. String insert="insert into w_95509 values('"+cell1+"','"+cell2+"','"+cell3+"','"+cell4+"','"+cell5+"','"+cell6+"')";
  58. System.out.println("SQL:"+insert);
  59. insert(insert);
  60. }
  61. }
  62. }
  63. }
  64. /**
  65. * execl数据格式的转换
  66. * @param cell
  67. * @return
  68. */
  69. public String publicExcel( HSSFCell cell){
  70. String value = null;
  71. switch (cell.getCellType()) {
  72. case HSSFCell.CELL_TYPE_NUMERIC:
  73. value = "" + cell.getNumericCellValue();
  74. break;
  75. case HSSFCell.CELL_TYPE_STRING:
  76. value = cell.getStringCellValue();
  77. break;
  78. case HSSFCell.CELL_TYPE_BLANK:
  79. ;
  80. break;
  81. default:
  82. }
  83. return value;
  84. }
  85. /**
  86. * 插入数据 只需要传入插入sql即可
  87. * 插入sql的样例:insert into t_department values('D004','金融部');
  88. * @param insert 插入语句
  89. * @return
  90. * @throws SQLException
  91. */
  92. public int insert(String insert) throws SQLException{
  93. Connection conn = this.conn();
  94. int re = 0;
  95. try{
  96. conn.setAutoCommit(false);//事物开始
  97. Statement sm = conn.createStatement();
  98. re = sm.executeUpdate(insert);
  99. if(re < 0){               //插入失败
  100. conn.rollback();      //回滚
  101. sm.close();
  102. conn.close();
  103. return re;
  104. }
  105. conn.commit();            //插入正常
  106. sm.close();
  107. conn.close();
  108. return re;
  109. }
  110. catch(Exception e){
  111. e.printStackTrace();
  112. }
  113. conn.close();
  114. return 0;
  115. }
  116. }

[转] JAVA读取excel数据(插入oracle数据库)的更多相关文章

  1. 批量Excel数据导入Oracle数据库

    由于一直基于Oracle数据库上做开发,因此常常会需要把大量的Excel数据导入到Oracle数据库中,其实如果从事SqlServer数据库的开发,那么思路也是一样的,本文主要介绍如何导入Excel数 ...

  2. Java实现Excel数据批量导入数据库

    Java实现Excel数据批量导入数据库 概述: 这个小工具类是工作中的一个小插曲哦,因为提数的时候需要跨数据库导数... 有的是需要从oracle导入mysql ,有的是从mysql导入oracle ...

  3. 代码执行批量Excel数据导入Oracle数据库

    由于基于Oracle数据库上做开发,因此常常会需要把大量的Excel数据导入到Oracle数据库中,其实如果从事SqlServer数据库的开发,那么思路也是一样的,本文主要介绍如何导入Excel数据进 ...

  4. 利用TOAD实现把EXCEL数据导入oracle数据库

    利用TOAD实现把EXCEL数据导入oracle数据库 工具:   Toad11.7z(百度搜索,直接下载) 1.将Excel文件中某些字段导入到Oracle数据库的对应表 连接想要导入的数据库 ,然 ...

  5. Java读取Excel数据

    Java读取Excel数据,解析文本并格式化输出 Java读取Excel数据,解析文本并格式化输出 Java读取Excel数据,解析文本并格式化输出 下图是excel文件的路径和文件名 下图是exce ...

  6. java实现EXCEL数据导入到数据库中的格式问题的解决

    之前作为项目甲方,加之java接触不多,在java web开发方面都是打下手的份. 对于EXCEL数据导入到数据库这个问题一直老是出现格式原因而导入失败也是未免惆怅,开发团队也是只说回去检查一下格式. ...

  7. POI读取Excel数据保存到数据库,并反馈给用户处理信息(导入带模板的数据)

    今天遇到这么一个需求,将课程信息以Excel的形式导入数据库,并且课程编号再数据库中不能重复,也就是我们需要先读取Excel提取信息之后保存到数据库,并将处理的信息反馈给用户.于是想到了POI读取文件 ...

  8. 通过读取excel数据和mysql数据库数据做对比(二)-代码编写测试

    通过上一步,环境已搭建好了. 下面开始实战, 首先,编写链接mysql的函数conn_sql.py import pymysql def sql_conn(u,pwd,h,db): conn=pymy ...

  9. Java读取excel数据保存入库

    Java开发读取excel表格数据入库保存: List<Map<String, Object>> list = null; String filePath = filePath ...

随机推荐

  1. [转]在 .NET 中远程请求 https 内容时,发生错误:根据验证过程,远程证书无效

    该文原网址:http://www.cnblogs.com/xwgli/p/5487930.html 在 .NET 中远程请求 https 内容时,发生错误:根据验证过程,远程证书无效.   当访问 h ...

  2. StackExchange.Redis帮助类解决方案RedisRepository封装(基础配置)

    本文版权归博客园和作者吴双本人共同所有,转载和爬虫,请注明原文地址.http://www.cnblogs.com/tdws/p/5815735.html 写在前面 这不是教程,分享而已,也欢迎园友们多 ...

  3. SimpleSSO:使用Microsoft.Owin.Security.OAuth搭建OAuth2.0授权服务端

    目录 前言 OAuth2.0简介 授权模式 (SimpleSSO示例) 使用Microsoft.Owin.Security.SimpleSSO模拟OpenID认证 通过authorization co ...

  4. MongoDB进行MapReduce的数据类型

    有很长一段时间没更新博客了,因为最近都比较忙,今天算是有点空闲吧.本文主要是介绍MapReduce在MongoDB上的使用,它与sql的分组.聚集类似,也是先map分组,再用reduce统计,最后还可 ...

  5. [moka同学笔记]PHPexcel之excel导出和导入

    原案例来自http://www.sucaihuo.com/有修改 1.目录结构(文件不用解释,应该都可以看得懂,直接看代码)

  6. 解决mysql too many connections的问题

    由于公司服务器上的创建的项目太多,随之创建的数据库不断地增加,在用navicat链接某一个项目的数据库时会出现too many connections ,从而导致项目连接数据库异常,致使启动失败. 为 ...

  7. linux(八)__yum工具

    自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载.安装. 什么是yum? yum工具实例: 因为yum指定的软件仓库源是国外的网站,在国内访问较慢.我们更改它的仓库源. 首先先备 ...

  8. bootstrap(关于栅格布局)

    栅格系统是通过行(.row)与列(column)的组合一起来创建页面布局的,所以只有列(column)可以作为行(row)的直接子元素,我们所要写的内容可以放在列里(column),不过在行的外层还需 ...

  9. Android 绘制view的小知识点

    [onMeasure] 直接继承view或ViewGroup的自定义控件需要重写onMeasure方法并设置wrap_content时的自身大小,否则在布局中使用wrap_content就相当于mat ...

  10. iOS:GCD理解1(同步-异步、串行-并行)

    1.并行-异步(ST1与ST2抢占资源) 1-1).获取 并行(全局)队列 ,DISPATCH_QUEUE_PRIORITY_DEFAULT 为默认优先级. dispatch_queue_t queu ...