java代码导入excel数据至oracle

本文处理的excel格式为xlsx:

1.新建maven项目

<dependencies>

<dependency>

<groupId>org.apache.poi</groupId>

<artifactId>poi</artifactId>

<version>3.14</version>

</dependency>

<dependency>

<groupId>org.apache.poi</groupId>

<artifactId>poi-ooxml</artifactId>

<version>3.14</version>

</dependency>

</dependencies>

(另:ojdbc的jar包由于版权问题无法直接引入,需要手动下载本次用的是ojdbc7.jar。)

2.文件(将1.xlsx(数据如下图)的数据 插入到 表a(deptno int,dname varchar,loc varchar))

DEPTNO DNAME LOC
10 ACCU NEWYORK
20 BB BB
30 VV VV
40 CC CC

3.代码部分

package exceltest;

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;

import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class ExeclOperate {

	//获取数据库连接
	public Connection conn(){  
        try {  
        //第一步:加载JDBC驱动  
        Class.forName("oracle.jdbc.driver.OracleDriver");  
        //第二步:创建数据库连接  
        Connection con =DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:orcl", "scott", "tiger");  
        return con;  
        }catch(ClassNotFoundException cnf){  
          System.out.println("driver not find:"+cnf);  
          return null;  
        }catch(SQLException sqle){  
          System.out.println("can‘t connection db:"+sqle);  
          return null;  
        }  
          catch (Exception e) {  
        System.out.println("Failed to load JDBC/ODBC driver.");  
        return null;  
        }  
    }  

	public void getExcel() throws Exception {  
		InputStream is = new FileInputStream(new File("D:\\1.xlsx"));
        XSSFWorkbook xssfWorkbook = new XSSFWorkbook(is);
        // 获取每一个工作薄
        for (int numSheet = 0; numSheet < xssfWorkbook.getNumberOfSheets(); numSheet++) {
            XSSFSheet xssfSheet = xssfWorkbook.getSheetAt(numSheet);
            if (xssfSheet == null) {
                continue;
            }
            // 获取当前工作薄的每一行
            for (int rowNum = 1; rowNum <= xssfSheet.getLastRowNum(); rowNum++) {
                XSSFRow xssfRow = xssfSheet.getRow(rowNum);
                if (xssfRow != null) {
                    //读取第一列数据
                    String a = getValue(xssfRow.getCell(0));
                    Integer one = Integer.parseInt(a.substring(0,a.indexOf(".")));
                    //读取第二列数据
                    String two = getValue(xssfRow.getCell(1));
                    //读取第三列数据
                    String three = getValue(xssfRow.getCell(2));
                    
                    String insert="insert into a values("+one+",‘"+two+"‘,‘"+three+"‘)"; 
                    System.out.println("SQL:"+insert); 
                     
                    insert(insert);
                }
            }
        }
	}

    //转换数据格式
    private String getValue(XSSFCell xssfRow) {
        if (xssfRow.getCellType() == xssfRow.CELL_TYPE_BOOLEAN) {
            return String.valueOf(xssfRow.getBooleanCellValue());
        } else if (xssfRow.getCellType() == xssfRow.CELL_TYPE_NUMERIC) {
            return String.valueOf(xssfRow.getNumericCellValue());
        } else {
            return String.valueOf(xssfRow.getStringCellValue());
        }
    }
    
    
    //添加数据
    public int insert(String insert) throws SQLException{  
        Connection conn = this.conn();  
        int re = 0;  
        try{  
            conn.setAutoCommit(false);//事务开始                  
            Statement sm = conn.createStatement();  
            re = sm.executeUpdate(insert);  
            if(re < 0){               //插入失败  
                conn.rollback();      //回滚  
                sm.close();  
                conn.close();    
                return re;  
            }  
            conn.commit();            //插入正常  
            sm.close();  
            conn.close();    
            return re;  
        }  
        catch(Exception e){  
            e.printStackTrace();  
        }  
        conn.close();    
        return 0;           
    }   
    
    //测试
    public static void main(String[] args) throws Exception {  
        ExeclOperate e=new ExeclOperate();  
        e.getExcel();  
        System.out.println("导入完成!");  
 } 
}
时间: 2024-10-10 14:42:45

java代码导入excel数据至oracle的相关文章

Java代码实现excel数据导入到Oracle

1.首先需要两个jar包jxl.jar,ojdbc.jar(注意版本,版本不合适会报版本错误)2.代码: Java代码   import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import jxl.Cell; import jxl.Sheet; import jxl.Workbook; import jxl.read.biff.Bi

java easyreport 导入excel、 txt 数据简单实现(一)

一直在看博客,却不知道怎么写,但是总是想写点什么,犹豫了两三天,决定还是写点东西吧,来和大家分享下. 今年上半年时候接到了一个需求,具体什么需求就不说了,要求导入excel数据,并提示每一行错误信息.接到手后,查看之前的导入excel报表的代码,发现只有初始化workBook和根据cell获取cell 字符串值得通用方法.觉得可利用的东西太少了,于是决定就构建一个通用的实现导入excel报表的工具包. 实现思路大致是这样的: 提供模板,模板包含读起始行.属性模板集合.读批次.校验出错中端. 添加

Oracle导入excel数据快速方法

Oracle导入excel数据快速方法 使用PLSQL  Developer工具,这个可是大名鼎鼎的Oracle  DBA最常使用的工具.    在单个文件不大的情况下(少于100000行),并且目的表结构已经存在的情况下——对于excel而言肯定不会超过了,因为excel文件的最大行为65536——  可以全选数据复制,然后用PLSQL  Developer工具.    1  在PLSQL  Developer的sql  window里输入select  *  from  test  for 

asp.net采用OLEDB方式导入Excel数据时提示:未在本地计算机上注册&quot;Microsoft.Jet.OLEDB.4.0&quot; 提供程序&quot;

asp.net采用OLEDB方式导入Excel数据时提示:未在本地计算机上注册"Microsoft.Jet.OLEDB.4.0" 提供程序" 笔者在项目中做做了一个从Excel表格中导入数据的模块.大体上asp.net项目中导入Excel大体分成三类: 1)采用c#内置方案System.Data.OleDb(限制较小, 通用) 2)采用Excel的COM组件(会有版本问题) 3)采用伪Excel文件.即使用文本流的方式根据需求自己定义数据格式.同时在服务端进行反格式化 笔者采

(转)PLSQL Developer导入Excel数据

场景:近来在做加班记录的统计,主要是统计Excel表格中的时间,因为我对于Excel表格的操作不是很熟悉,所以就想到把表格中的数据导入到数据库中,通过脚本语言来统计,就很方便了!但是目前来看,我还没有完成最终统计的目的,只是将Excel中的数据导入到了数据库中了,所以未完待续! 最近处理将Excel数据导入Oracle的工作比较多.之前都是采用Sqlldr命令行导入的方式处理.每次导入不同格式的Excel表数据,都需要先把Excel文件由“.xls”格式转换为“.csv”格式,再手工根据Exce

windows命令行下导入excel数据到SQLite数据库

1.转换文件格式,防止中文乱码:将excel保存成"CSV(逗号分隔)(*.csv)"格式,关闭文件,用记事本打开刚才保存的.csv文件,然后另存为UTF-8格式文本.需要注意的是,经过这样的转换,数字也全变成文本了. 2.通过adb shell(adb.exe存放在android开发软件安装文件夹中,如 F:\Develope\Tools\adt-bundle-windows-x86\sdk\platform-tools\)更改sqlite数据库的使用权限.运行adb之前要先打开AV

结合bootstrap fileinput插件和Bootstrap-table表格插件,实现文件上传、预览、提交的导入Excel数据操作流程

1.bootstrap-fileinpu的简单介绍 在前面的随笔,我介绍了Bootstrap-table表格插件的具体项目应用过程,本篇随笔介绍另外一个Bootstrap FieInput插件的使用,整合两者可以实现我们常规的Web数据导入操作,导入数据操作过程包括有上传文件,预览数据,选择并提交记录等一系列操作. 关于这个插件,我在早期随笔<Bootstrap文件上传插件File Input的使用>也做了一次介绍,这是一个增强的 HTML5 文件输入控件,是一个 Bootstrap 3.x

导入Excel数据至数据库——思路整理

说明 背景: 导入Excel数据到数据库成为目前项目中很常用的技术,整理以前的实现发现:在原来系统中的导入,没有实现方法复用,如果要实现某一处数据的导入,需要将原来的代码复制过去.修修改改,实现过程较为复杂,实现类似的功能需要对原来的代码重新梳理,结合业务修改代码. 为了让每次相同的功能都不需要重复的开发,我们需要实现一种能够得到复用的程序功能. 目的: 如图所示 我们需要将Excel中的数据记录插入到DB的表中,如何实现? 转换 将Excel转换为List 将Excel转换为DataTable

SQL Server服务器上需要导入Excel数据的必要条件

SQL Server服务器上需要导入Excel数据,必须安装2007 Office system 驱动程序:数据连接组件,或者Access2010的数据库引擎可再发行程序包,这样就不必在服务器上装Excel了.