java把excel數據寫入Oracle數據庫,此處需要引入兩個文件:ojdbc14.jar,jxl-2.6.10.jar,首先在oracle建立表exceltest,excel文件內容與其對應,此處注意:(excel版本太高了 報錯:Exception in thread "main" jxl.read.biff.BiffException: Unable to recognize,把文件保存成excel 97-2003即可)
1.建表
- -- Create table
- create table EXCELTEST
- (
- line1 VARCHAR2(20),
- line2 VARCHAR2(20),
- line3 VARCHAR2(20),
- line4 VARCHAR2(20)
- )
2.準備好的excel內容(excel 97-2003)
3.java文件:
- package excel;
- import java.io.File;
- import java.io.IOException;
- import jxl.Cell;
- import jxl.Sheet;
- import jxl.Workbook;
- import jxl.read.biff.BiffException;
- /**
- * excel數據導入到oracle
- * @author
- *
- */
- public class excelToOracle {
- public static void main(String[] args) throws Exception {
- excelToOracle in = new excelToOracle();
- in.insert("F:/test.xls","exceltest");
- }
- /**
- *
- * @param path
- * 要解析的excel文件路徑
- * @param dataTable
- * 要寫入到數據庫中的表名
- * @throws BiffException
- * @throws IOException
- */
- public void insert(String path,String dataTable) throws BiffException, IOException {
- File file = new File(path);
- // 創建新的Excel 工作簿
- Workbook rwb = null;
- rwb = Workbook.getWorkbook(file);
- // 得到工作簿中的第一個表索引即爲excel下的sheet1,sheet2,sheet3...
- Sheet sheet = rwb.getSheets()[0];
- int rsColumns = sheet.getColumns();// 列數
- int rsRows = sheet.getRows();// 行數
- String simNumber = "" ;//每個單元格中的數據
- DBUtils jdbc=new DBUtils();
- String str="";//拼接要插入的列
- for (int j = 0; j <rsColumns; j++) {
- Cell cell = sheet.getCell(j, 0);
- simNumber = cell.getContents();
- if(j==rsColumns-1){
- str += simNumber ;
- }else{
- str += simNumber+",";
- }
- }
- for (int i = 1; i < rsRows; i++) {
- String sql = "insert into "+dataTable+"("+str+") values(";//拼接sql
- System.out.println(str);
- for (int j = 0; j < rsColumns; j++) {
- Cell cell = sheet.getCell(j, i);
- simNumber = cell.getContents();
- if(j==rsColumns-1){
- sql += "'"+ simNumber+"'" ;
- }else{
- sql +="'"+ simNumber+"',";
- }
- }
- sql += " )";
- jdbc.executeUpdate(sql);//執行sql
- }
- jdbc.closeStmt();
- jdbc.closeConnection();
- }
- }
工具類:
- package excel;
- import java.sql.Connection;
- import java.sql.DriverManager;
- import java.sql.ResultSet;
- import java.sql.SQLException;
- import java.sql.Statement;
- /**
- * Oracle數據庫連接
- *
- * @author
- */
- public class DBUtils {
- private Connection conn = null;
- private Statement stmt = null;
- private ResultSet rs = null;
- /** Oracle數據庫連接 URL */
- private final static String DB_URL = "jdbc:oracle:thin:@localhost:1521:orcl";
- /** Oracle數據庫連接驅動 */
- private final static String DB_DRIVER = "oracle.jdbc.driver.OracleDriver";
- /** 數據庫用戶名 */
- private final static String DB_USERNAME = "caiyl";
- /** 數據庫密碼 */
- private final static String DB_PASSWORD = "123456";
- /**
- * 獲取數據庫連接
- *
- * @return
- */
- public Connection getConnection() {
- /** 聲明Connection連接對象 */
- Connection conn = null;
- try {
- /** 使用 Class.forName()方法自動創建這個驅動程序的實例且自動調用DriverManager來註冊它 */
- Class.forName(DB_DRIVER);
- /** 通過 DriverManager的getConnection()方法獲取數據庫連接 */
- conn = DriverManager
- .getConnection(DB_URL, DB_USERNAME, DB_PASSWORD);
- stmt = conn.createStatement();
- } catch (Exception ex) {
- ex.printStackTrace();
- }
- return conn;
- }
- /**
- * 查詢數據部分
- *
- * @return ResultSet
- */
- public ResultSet executeQuery(String sqlStr) {
- if (sqlStr == null || sqlStr.length() == 0)
- return null;
- try {
- this.getConnection();
- rs = stmt.executeQuery(sqlStr);
- return rs;
- } catch (SQLException ex) {
- ex.printStackTrace();
- return null;
- }
- }
- /**
- * 更新數據部分
- *
- * @return 更新是否成功
- */
- public boolean executeUpdate(String sqlStr) {
- if (sqlStr == null || sqlStr.length() == 0)
- return false;
- try {
- this.getConnection();
- stmt.executeUpdate(sqlStr);
- return true;
- } catch (SQLException ex) {
- ex.printStackTrace();
- return false;
- } finally {
- try {
- if (stmt != null) {
- stmt.close();
- }
- } catch (SQLException e) {
- e.printStackTrace();
- }
- try {
- if (conn != null) {
- conn.close();
- }
- } catch (SQLException e) {
- e.printStackTrace();
- }
- }
- }
- public void closeStmt() {
- try {
- if (stmt != null) {
- stmt.close();
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- /**
- * 關閉數據庫連接
- *
- * @param connect
- */
- public void closeConnection() {
- try {
- if (conn != null) {
- /** 判斷當前連接連接對象如果沒有被關閉就調用關閉方法 */
- if (!conn.isClosed()) {
- conn.close();
- }
- }
- } catch (Exception ex) {
- ex.printStackTrace();
- }
- }
- }
4.執行效果,查看數據庫表:
-
)