如果你会从一个数据库读写数据,那么从两个数据库读写有何区别呢?
应该安装这两种数据库的驱动先。然后定义两个Connection对象,就可以读写了。
如果仅仅是为了把表导过去,是不是在oracle里可以直接弄呢?我没用过,但我觉得应该有。

解决方案 »

  1.   

    呵呵,在oracle中确实可以实现不同数据库之间的转换。但是我现在要做的是一个供客户使用的平台,当客户先选择一个.xsl文件后,再点击提交,就将其转化为oracle中的一张表了。由于以前用excel很少,在网上也没找到如何在java中实现该功能,所以,就只好请教大家了。
      

  2.   

    用jxl来实现
    import jxl.Cell;
    import jxl.Sheet;
    import jxl.Workbook;public String importEnter(HttpServletRequest request) {
    Connection conn = null;
    PreparedStatement ps = null;
    OpenDbBean db = new OpenDbBean();
    String message = "";
    try {
    ServletInputStream is = request.getInputStream();
    byte[] junk = new byte[1024];
    int bytesRead = 0;
    //去掉浏览器发送的垃圾信息
    bytesRead = is.readLine(junk, 0, junk.length);
    bytesRead = is.readLine(junk, 0, junk.length);
    bytesRead = is.readLine(junk, 0, junk.length);
    bytesRead = is.readLine(junk, 0, junk.length);
    Workbook workbook = Workbook.getWorkbook(is);
    //取得第一个工作录
    Sheet sheet = workbook.getSheet(0);
    //从第二行开始取数据并处理
    Enter enter = new Enter();
    //连接数据库
    conn = db.getConnection();
    String sql =
    "insert into haocai_enter(enter_id,enter_time,amount,jsr,type_id,xh)"
    + " values(s_enter_id.nextval,to_date(?,'dd/mm/yyyy'),?,?,?,?)";
    ps = conn.prepareStatement(sql);
    int okCount = 0;
    ArrayList errorRows = new ArrayList();
    for (int i = 1; i < sheet.getRows(); i++) {
    DB mydb = new DB();
    Cell[] c = sheet.getRow(i);
    String type_id = enter.getTypeIdByPm(c[PM].getContents());
    if (type_id != null) {
    //设置入库数据
    ps.setString(1, c[ENTER_TIME].getContents());
    ps.setString(2, c[AMOUNT].getContents());
    ps.setString(3, c[JSR].getContents());
    ps.setString(4, type_id);
    ps.setString(5, c[XH].getContents());
    ps.addBatch();
    okCount++;
    } else {
    message += "<br>第" + i + "行 " + c[PM].getContents() + " 导入失败";
    }
    }
    //执行该批过程
    if (okCount > 0) {
    ps.executeBatch();
    }
    message += "<br>成功导入" + okCount + " 行";
    workbook.close();
    } catch (Exception e) {
    System.out.println(e.getMessage());
    message += "<br>" + e.getMessage();
    } finally {
    try {
    db.CleanConnection(conn, ps, null);
    } catch (SQLException e1) {
    e1.printStackTrace();
    }
    }
    return message;
    }
      

  3.   

    因为现在用java去操作excel数据,需要用jxl.jar。
    我在网上搜索了一下,一般都提供下载的网址为http://www.andykhan.com/jexcelapi/,可我一直打不开这个网页,所以麻烦好心人上传这个文件,谢谢拉!
      

  4.   

    对,用jxl.jar或者poi都可以,poi可以到apache网站上去下。利用Java 创建和读取Excel文档
    为了保证示例程序的运行,必须安装Java 2 sdk1.4.0 和Jakarta POI,Jakarta POI的Web站点是: http://jakarta.apache.org/poi/ 示例1将演示如何利用Jakarta POI API 创建Excel 文档。 示例1程序如下:
    import org.apache.poi.hssf.usermodel.HSSFWorkbook;
    import org.apache.poi.hssf.usermodel.HSSFSheet;
    import org.apache.poi.hssf.usermodel.HSSFRow;
    import org.apache.poi.hssf.usermodel.HSSFCell;
    import java.io.FileOutputStream;
    public class CreateXL {
     /** Excel 文件要存放的位置,假定在D盘JTest目录下*/
     public static String outputFile="D:/JTest/ gongye.xls";
     public static void main(String argv[])
      {
     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("增加值");
      // 新建一输出文件流
      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文档中的数据
      示例2将演示如何读取Excel文档中的数据。假定在D盘JTest目录下有一个文件名为gongye.xls的Excel文件。
      示例2程序如下:
    import org.apache.poi.hssf.usermodel.HSSFWorkbook;
    import org.apache.poi.hssf.usermodel.HSSFSheet;
    import org.apache.poi.hssf.usermodel.HSSFRow;
    import org.apache.poi.hssf.usermodel.HSSFCell;
    import java.io.FileInputStream;
    public class ReadXL {
     /** Excel文件的存放位置。注意是正斜线*/
     public static String fileToBeRead="D:/JTest/ gongye.xls";
     public static void main(String argv[]){ 
     try{
      // 创建对Excel工作簿文件的引用
      HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream(fileToBeRead));
      // 创建对工作表的引用。
      // 本例是按名引用(让我们假定那张表有着缺省名"Sheet1")
      HSSFSheet sheet = workbook.getSheet("Sheet1");
      // 也可用getSheetAt(int index)按索引引用,
      // 在Excel文档中,第一张工作表的缺省索引是0,
      // 其语句为:HSSFSheet sheet = workbook.getSheetAt(0);
      // 读取左上端单元
      HSSFRow row = sheet.getRow(0);
      HSSFCell cell = row.getCell((short)0);
      // 输出单元内容,cell.getStringCellValue()就是取所在单元的值
      System.out.println("左上端单元是: " + cell.getStringCellValue()); 
     }catch(Exception e) {
      System.out.println("已运行xlRead() : " + e );
     }
    }
    }
      设置单元格格式
      在这里,我们将只介绍一些和格式设置有关的语句,我们假定workbook就是对一个工作簿的引用。在Java中,第一步要做的就是创建和设置字体和单元格的格式,然后再应用这些格式:  1、创建字体,设置其为红色、粗体:
    HSSFFont font = workbook.createFont();
    font.setColor(HSSFFont.COLOR_RED);
    font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
      2、创建格式
    HSSFCellStyle cellStyle= workbook.createCellStyle();
    cellStyle.setFont(font);
      3、应用格式 
    HSSFCell cell = row.createCell((short) 0);
    cell.setCellStyle(cellStyle);
    cell.setCellType(HSSFCell.CELL_TYPE_STRING);
    cell.setCellValue("标题 ");  总之,如本篇文章所演示的一样,Java程序员不必担心Excel工作表中的数据了,利用Jakarta POI API,我们就可以轻易的在程序中存取Excel文档。