`
ZhengMingwei
  • 浏览: 135614 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java读取ecxel文件 并写入oracle数据库

阅读更多

package com.icss.util;

import java.io.FileInputStream;
import java.io.FileOutputStream;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.text.DecimalFormat;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
/**

* java读取excel文件
*
* 一个Excel文件的层次:Excel文件->工作表->行->单元格 对应到POI中,为:workbook->sheet->row->cell

*/
public class exlFile {
 public static String outputFile = "E:\\NQ_SCHEDULE_INFO.xls";

 public static String fileToBeRead = "E:\\NQ_SCHEDULE_INFO.xls";

 public void CreateExcel() {
   try {
   // 创建新的Excel 工作簿
   HSSFWorkbook workbook = new HSSFWorkbook();
   // 在Excel工作簿中建一工作表,其名为缺省值
   // 如要新建一名为"效益指标"的工作表,其语句为:
   // HSSFSheet sheet = workbook.createSheet("效益指标");
   HSSFSheet sheet = workbook.createSheet();
   // 在索引0的位置创建行(最顶端的行)
   HSSFRow row = sheet.createRow((short) 0);
   //在索引0的位置创建单元格(左上端)
   HSSFCell cell = row.createCell((short) 0);
   // 定义单元格为字符串类型
   cell.setCellType(HSSFCell.CELL_TYPE_STRING);
   // 在单元格中输入一些内容
   cell.setCellValue("sweater");
   // 新建一输出文件流
   FileOutputStream fOut = new FileOutputStream(outputFile);
   // 把相应的Excel 工作簿存盘
   workbook.write(fOut);
   fOut.flush();
   // 操作结束,关闭文件
   fOut.close();
   System.out.println("文件生成...");

   } catch (Exception e) {
   System.out.println("已运行 xlCreate() : " + e);
   }
 }

/**
  *
  * 读取excel,遍历各个小格获取其中信息,并判断其是否是手机号码,并对正确的手机号码进行显示
  *
  *
  * 注意: 1.sheet, 以0开始,以workbook.getNumberOfSheets()-1结束 2.row,
  * 以0开始(getFirstRowNum),以getLastRowNum结束 3.cell,
  * 以0开始(getFirstCellNum),以getLastCellNum结束, 结束的数目不知什么原因与显示的长度不同,可能会偏长
  * 
  */
public void readExcel() {
  //将被表示成1.3922433397E10的手机号转化为13922433397,不一定是最好的转换方法
  DecimalFormat df = new DecimalFormat("#");

  try {
  // 创建对Excel工作簿文件的引用
  HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream(
    fileToBeRead));
  //System.out
  //  .println("===SheetsNum===" + workbook.getNumberOfSheets());//获取sheet数
  for (int numSheets = 0; numSheets < workbook.getNumberOfSheets(); numSheets++) {
    if (null != workbook.getSheetAt(numSheets)) {
    HSSFSheet aSheet = workbook.getSheetAt(numSheets);//获得一个sheet
    //System.out.println("+++getFirstRowNum+++" +
    // aSheet.getFirstRowNum());//
    //System.out.println("+++getLastRowNum+++" +
    // aSheet.getLastRowNum());

    for (int rowNumOfSheet = 0; rowNumOfSheet <= aSheet
      .getLastRowNum(); rowNumOfSheet++) {
      if (null != aSheet.getRow(rowNumOfSheet)) {
      HSSFRow aRow = aSheet.getRow(rowNumOfSheet);

      //System.out.println(">>>getFirstCellNum < < <"+
      // aRow.getFirstCellNum());
      //System.out.println(">>>getLastCellNum < < <"+
      // aRow.getLastCellNum());
      for (short cellNumOfRow = 0; cellNumOfRow <= aRow
        .getLastCellNum(); cellNumOfRow++) {

        if (null != aRow.getCell(cellNumOfRow)) {
        HSSFCell aCell = aRow.getCell(cellNumOfRow);

        int cellType = aCell.getCellType();
        System.out.println(cellNumOfRow+"     cellType :"+cellType);
        switch (cellType) {
        case 0://Numeric
          String strCell = df.format(aCell
            .getNumericCellValue());

          System.out.println("strCell0===============:"+strCell);
         

          break;
        case 1://String
          strCell = aCell.getStringCellValue();

          System.out.println("strCell1¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥:"+strCell);
         

          break;
        default:
        System.out.println("格式不对不读");//其它格式的数据
        }

        }

      }
      }

    }

    }

  }

  } catch (Exception e) {
  System.out.println("ReadExcelError" + e);
  }

}

  public static void main(String[] args) throws SQLException {
  

   try {
  //1. 连接Oracle 8/8i/9i的驱动程序:
  Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();    
     //2. 建立连接:
  Connection con=DriverManager.getConnection("jdbc:oracle:thin:@192.168.30.150:1521:orcl","JNNQ","JNNQ");
        //
  Statement sm=con.createStatement();
  //String sql="insert into nq_schedule_info names(REPORT_ID,REPORT_CODE,TBY,TBR, COMMENTT)values (?,?,?,?,?)";
  //seq_product.nextval
  String sql="insert into nq_schedule_info values (nq_schedule_info_sequence.nextval,?,?,?,?,?)";
  
  PreparedStatement pst=con.prepareStatement(sql);
  
    //将被表示成1.3922433397E10的手机号转化为13922433397,不一定是最好的转换方法
    DecimalFormat df = new DecimalFormat("#");

    try {
    // 创建对Excel工作簿文件的引用
    HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream(
      fileToBeRead));
    //System.out
    //  .println("===SheetsNum===" + workbook.getNumberOfSheets());//获取sheet数
    for (int numSheets = 0; numSheets < workbook.getNumberOfSheets(); numSheets++) {
      if (null != workbook.getSheetAt(numSheets)) {
      HSSFSheet aSheet = workbook.getSheetAt(numSheets);//获得一个sheet
      //System.out.println("+++getFirstRowNum+++" +
      // aSheet.getFirstRowNum());//
      //System.out.println("+++getLastRowNum+++" +
      // aSheet.getLastRowNum());

        int p1=0,p4 = 0,p3=0,p0 = 0;
        String s2 = null,s5=null;
      for (int rowNumOfSheet = 0; rowNumOfSheet <= aSheet
        .getLastRowNum(); rowNumOfSheet++) {
        if (null != aSheet.getRow(rowNumOfSheet)) {
        HSSFRow aRow = aSheet.getRow(rowNumOfSheet);

        //System.out.println(">>>getFirstCellNum < < <"+
        // aRow.getFirstCellNum());
        //System.out.println(">>>getLastCellNum < < <"+
        // aRow.getLastCellNum());

       
        for (short cellNumOfRow = 0; cellNumOfRow <= aRow
          .getLastCellNum(); cellNumOfRow++) {

          if (null != aRow.getCell(cellNumOfRow)) {
          HSSFCell aCell = aRow.getCell(cellNumOfRow);

          int cellType = aCell.getCellType();
          String strCell;
          System.out.println(cellNumOfRow+"     cellType :+++++++++++++++"+cellType);
          switch (cellType) {
          case 0://Numeric
             strCell = df.format(aCell
              .getNumericCellValue());

            System.out.println("strCell0===============:"+strCell);
            if(0==cellNumOfRow) p0=Integer.parseInt(strCell);
            if(1==cellNumOfRow) p1=Integer.parseInt(strCell);
            if(3==cellNumOfRow) p3=Integer.parseInt(strCell);
            if(4==cellNumOfRow) p4=Integer.parseInt(strCell);
            break;
          case 1://String
            strCell = aCell.getStringCellValue();

            System.out.println("strCell1¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥:"+strCell);
            if(2==cellNumOfRow) s2=strCell;
            if(5==cellNumOfRow) s5=strCell;

            break;
          default:
         if(0==cellNumOfRow) p0=0;
            if(1==cellNumOfRow) p1=0;
            if(3==cellNumOfRow) p3=0;
            if(4==cellNumOfRow) p4=0;
            if(2==cellNumOfRow) s2="0";
            if(5==cellNumOfRow) s5="0";
 
          System.out.println("格式不对不读");//其它格式的数据
         
          }

          }

        }
        System.out.println("pppppppppppppppppppppppppppp"+p0+"  "+p1+"  "+p3+"  "+p4+"  "+s2+"  "+s5+"  ");
        //pst.setInt(0,  "");
        pst.setInt(1, p1);
        pst.setString(2, s2);
        pst.setInt(3, p3);
        pst.setInt(4, p4);
        pst.setString(5, s5);
        pst.execute();
        con.commit();
        }

      }

      }

    }

    } catch (Exception e) {
     System.out.println("????????");
    System.out.println("ReadExcelError" + e);
    }
  
  ResultSet rs=sm.executeQuery(sql);
  while (rs.next())
  {
   //对结果的处理
  }
  rs.close();
  sm.close();
  con.close();
 
   } catch (InstantiationException e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
 } catch (IllegalAccessException e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
 } catch (ClassNotFoundException e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
 }

   exlFile poi = new exlFile();
  //poi.CreateExcel();
  poi.readExcel();

}
}

 

 

 

分享到:
评论

相关推荐

    JXL(Java操作Excel文件Oracle数据库)

    JXL(Java操作Excel文件Oracle数据库)

    excel中数据写入Oracle

    在IT行业中,将Excel数据导入Oracle数据库...总之,将Excel数据写入Oracle数据库涉及多个步骤,需要结合合适的工具和技术。理解这些过程可以帮助你更有效地进行数据迁移,从而提高工作效率并确保数据的准确性和完整性。

    用java从Oracle的EMP表读数据并写到EXCEL中,实现oracle表的备份和导入

    6. **写入Excel**:Java可以借助Apache POI库或其他类似的库(如JExcelApi)来读写Excel文件。读取Oracle数据后,可以将数据写入Excel的工作表中,每个表格行对应数据库记录的一行。 7. **读取Excel数据**:从Excel...

    java 开发excel报表

    在Java程序中,我们通常按照以下步骤来连接Oracle数据库: 1. 加载和注册数据库驱动。例如,对于Oracle数据库,我们需要加载Oracle JDBC驱动: ```java Class.forName("oracle.jdbc.driver.OracleDriver"); ``` 2. ...

    java将数据库的数据导入excel

    在Java编程领域,将数据库中的数据导入到Excel文件是一项常见的任务,这有助于数据分析、报告生成或者数据备份。本文将深入探讨如何使用Java实现这一功能,主要涉及以下知识点: 1. **Java连接数据库**:首先,我们...

    将excel中的数据导入数据库demo

    4. **读取Excel数据**:使用编程语言(如C#、Python或Java)的库,如.NET Framework中的`Microsoft.Office.Interop.Excel`或开源的`EPPlus`,读取Excel文件中的数据。这些库能方便地访问和操作Excel文件内容。 5. *...

    java数据库常用驱动包

    jxl.jar不是数据库驱动,而是Java Excel API,用于读写Excel文件。这个库可以方便地在Java程序中操作Excel数据,比如读取Excel表格数据到Java对象,或将数据写入Excel文件。这对于需要与Excel进行数据交换的应用...

    java读取数据库中数据到excel

    在Java编程中,将数据库中的数据导出到Excel文件...通过以上步骤,你可以成功地使用Java从数据库中读取数据并将其导出到Excel文件。这个过程涉及到了数据库操作、文件I/O以及第三方库的使用,是Java开发中的常见技能。

    将EXCEL表导入到ORACLE中

    这里,我们主要关注如何通过Java编程来实现这个功能,利用JXL库来处理Excel文件,并通过Java JDBC连接Oracle数据库进行数据导入。 首先,`JXL`是一个强大的Java库,专门用于读取和写入Excel文件。在这个项目中,`...

    将Excel中数据导入到数据库中

    - Python:使用pandas库读取Excel数据,再利用pandas的`to_sql`函数将数据写入数据库,例如`df.to_sql('table_name', con=engine, if_exists='append')`。 - Java:使用JDBC驱动,先加载Excel数据到Java的...

    把Excel里的数据写进数据库

    Python中的`pandas`库或Java的Apache POI库是常用的工具,它们能读取Excel文件并将其转换为数据框或表格。解析数据时,要考虑到不同版本的Excel文件格式(如.XLS, .XLSX)可能有所不同。 4. **数据库交互**:解析...

    将Oracle数据库中的数据写入Excel

    本文主要介绍如何将Oracle数据库中的数据导出并写入Excel文件,这在数据分析、报表生成或数据备份等场景中非常实用。 1. **Oracle数据库数据提取**: 在这个例子中,我们看到一个名为"TBYZB_FIELD_PRESSURE"的...

    Java数据库导入Excel

    本文将详细讲解如何实现这个过程,主要涉及Java与数据库的交互、Excel文件的创建以及数据的读写操作。 首先,我们需要一个数据库连接。在Java中,可以使用JDBC(Java Database Connectivity)API来连接各种类型的...

    dwr结合jQuery实现Ajax技术 ,Oracle作为后台数据库,jxl + poi报表

    标题中的“dwr结合jQuery实现Ajax技术”是指在Web开发中使用Direct Web Remoting (DWR) 和 jQuery库来创建...开发者需要掌握Java编程、Ajax技术、SQL查询、Oracle数据库管理以及使用jxl和POI处理Excel文件的相关技能。

    Excel与数据库数据交换类

    数据交换通常涉及到读取Excel文件中的数据,并将其存入数据库,或者从数据库中检索数据并写入到Excel文件中。这个类可能包含了以下功能: 1. **读取Excel数据**:类可能会使用诸如Apache POI这样的库来读取Excel...

    Oracle导入导出图片及Excel(标注:没有源代码!)

    **Excel数据交互**:在Oracle与Excel之间进行数据交换,通常会用到API库,如Java的Apache POI(在本例中提到了NPOI.dll,它是.NET平台下的一个类似实现),它允许程序读写Microsoft Office格式的文件,包括Excel。...

    java_Excle读取导入(不需要连数据库_只用导个jxl包)

    - 如果需要将数据写入 Oracle 数据库,你需要额外编写代码连接数据库并执行 SQL 操作。 4. **扩展**: - 除了读取,jxl 也支持写入 Excel 文件。你可以创建一个新的 `WritableWorkbook`,然后使用 `WritableSheet`...

    Excel上传操作数据库

    - Apache POI是Java库,用于读取、写入和修改Microsoft Office格式的文件,包括Excel。在上述描述中,可以看到项目导入了几个POI的jar文件,如poi-3.5-beta6-20090622.jar,这表明程序依赖POI来创建和操作Excel文件...

    excel导入导出数据库

    例如,Java中的JDBC(Java Database Connectivity)允许直接读取Excel文件并插入数据库。本提供的jar包可能就是用于此目的,包含读取Excel和执行SQL操作的类。 三、数据库数据导出到Excel 1. 手动导出:在数据库...

    excle导入ORACLE源码.rar

    在标签中,“excle导入”和“ORACLE”是两个关键点,意味着这个源码是关于如何从Excel文件中提取数据并导入到Oracle数据库的过程。Excel是一种常见的数据处理工具,而Oracle则是一种广泛使用的大型关系型数据库管理...

Global site tag (gtag.js) - Google Analytics