上传excel

将上传的excel文件导入到数据库主要分为以下步骤:

首先,将上传的文件保存到服务器一目录,最好是临时目录。

其次,根据这个目录获取相应的输出流,然后根据输出流和jxl第三方组件获得工作簿的相关信息。

再次,读取生成的工作簿信息,连接数据库,插入数据。

   String filePath = "D:/b/a.xls";
            //必须保证b目录层次存在,当a文件不存在时才会新建立文件。
            FileOutputStream os = new FileOutputStream(filePath);
            PRDMAN01000005FORM form = (PRDMAN01000005FORM)actionForm;
            FormFile excelfile = form.getExcel();
            String name = excelfile.getFileName();
            os.write(excelfile.getFileData());
            os.flush();
            os.close();
            FileInputStream is =new FileInputStream(filePath);
            //BufferedReader br = new BufferedReader(is);
            jxl.Workbook rwb = Workbook.getWorkbook(is);
            Sheet rs = rwb.getSheet(0);
            //获取第一行,第一列的值
            Cell c00 = rs.getCell(0, 0);
            String strc00 = c00.getContents();

对于流的引用要注意,要保证目录层次在物理硬盘上存在,文件不存在的话,对于输出流,可以自动生成相应的文件。对于前台的文件上传,也要注意:一是保证提交的method是post,二是要保证enctype属性的值是multipart/form-data.相应的文件数据收集需要根据具体环境具体设置。

以下是示范性的代码,只做参考。。。。。。。。。。。

JAVA文件:ReadExcelTest.java --------------------------------------------------------------

package com.mypack;

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.sql.*; import java.io.*; import java.util.ArrayList; import java.sql.Connection;

public class ReadExcelTest { private Connection con; String DBDriver="oracle.jdbc.driver.OracleDriver"; String url="jdbc:oracle:thin:@192.168.0.1:1521:dbname"; String USER="username"; String PWD="password"; private ArrayList listFirstColum = new ArrayList(); private ArrayList listSecondColum = new ArrayList(); //连接数据库 public ReadExcelTest() throws Exception { try { Class.forName(DBDriver); con=DriverManager.getConnection(url,USER,PWD); } catch(Exception e) { e.printStackTrace(); throw(new Exception("Sorry,database connecting failed!")); } } //从excel中读取数据存入ArrayList中 public void readExcel(String sFileName) { try { HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream(sFileName));//读取excel文件 HSSFSheet sheet = workbook.getSheetAt(0);//读取第一个sheet for(int i=0;i<=sheet.getLastRowNum();i++)//循环取得所有行 { if(sheet.getRow(i)!=null) { HSSFRow aRow = sheet.getRow(i);//行数 HSSFCell cellFirstColum = aRow.getCell((short)0);//第一列 HSSFCell cellSecondColum = aRow.getCell((short)1);//第二列 //把数据存入list里备用 listFirstColum.add((int)cellFirstColum.getNumericCellValue());//假定第一列为数字型 listSecondColum.add(cellSecondColum.getStringCellValue());//假定第二列为字符串型 } } System.out.println("Excel读取成功!"); }catch(Exception e) { e.printStackTrace(); } } //从ArrayList中把数据写入数据库 public void insertData(String sFileName) { //读取 readExcel(sFileName); String sqlInsert = "insert into tbl_name" +"(first_colum,second_colum)values(?,?)"; //插入 try { for (int i=0;i{ PreparedStatement pstmt=con.prepareStatement(sqlInsert); pstmt.setInt(1, listFirstColum.get(i)); pstmt.setString(2, listSecondColum.get(i).toString()); pstmt.execute(); System.out.println("正在导入第 "+(i+1)+" 条记录"); } System.out.println("导入完毕!"); }catch(Exception e) { e.printStackTrace(); } } }

 

JSP:test.jsp -----------------------------------------

<%@ page pageEncoding="GB2312"%> <%@ page import="com.mypack.ReadExcelTest" %> <% ReadExcelTest read = new ReadExcelTest(); read.insertData("D://test.xls"); %>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值