当前位置: 代码迷 >> J2EE >> 急用jsp将excel中数据导入到SqlServer2005,该如何处理
  详细解决方案

急用jsp将excel中数据导入到SqlServer2005,该如何处理

热度:159   发布时间:2016-04-22 01:33:29.0
急……用jsp将excel中数据导入到SqlServer2005
最近在做一个项目,要求用java将excel中数据导入到SqlServer2005。希望那位高手能举个列子,最好有全部的代码和详细的说明
十分感谢,因为我积分不多了,所以只能给5分,对此是在抱歉!

------解决方案--------------------
poi可以实现
------解决方案--------------------
简单来说,就是将excel里每一行数据取出来存入到数据库中成为一条数据。就是一个类: ExcelBatchToDB .java
代码如下:

package com.sdp.tools;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.sql.PreparedStatement;
import java.sql.SQLException;

import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;


/**
 * 批量导入Excel中的信息到数据库
 * @author better82
 *
 */
public class ExcelBatchToDB extends ObjectDao {

int passData = 0; //有问题的数据条数,未导入数据库。

String passDatas = ""; //有问题数据的行号集合。

public String getPassDatas() {
return passDatas;
}

public void setPassDatas(String passDatas) {
this.passDatas = passDatas;
}

public int getPassData() {
return passData;
}

public void setPassData(int passData) {
this.passData = passData;
}

/**
* 将高校基本信息(Excel文件)导入到数据库中
* @param completePath Excel文件的路径(例如:G:\tomcat-5.5.23\webapps\jsTest\better.xls)
*/
public boolean ImportData(String completePath) {

PreparedStatement pstatement = null;
boolean abortTransaction = false;
InputStream fs = null;
Workbook wb = null;

try {
fs = new FileInputStream(completePath);
} catch (FileNotFoundException ex) {
ex.printStackTrace();
}
try {
wb = Workbook.getWorkbook(fs); // 得到 workbook
}
catch (BiffException ex) {
ex.printStackTrace();
} catch (IOException ex) {
ex.printStackTrace();
}

/**
* 取得sheet,如果你的workbook里有多个sheet 可以利用 wb.getSheets()方法来得到所有的。
* getSheets() 方法返回 Sheet[] 数组 然后利用数组来操作。
*/
Sheet[] sh = wb.getSheets();
connection = this.methodTransOpen();
try {
for (int i = 0; i < sh.length; i++){ //循环读出Excel表中数据

int rowNum = 0;//excel表中的行号


for (int j = 0; j < sh[i].getRows(); j++) { //getCell(0, j): j 是行,0 是列.

rowNum++;

if (j == 0) {continue;}//Excel表中第一行不做入库操作,因为excel表中第一行通常是文字标题,不是数据。例如:

String temp1 = MyString.trim(sh[i].getCell(0, j).getContents());//院校代码
String temp2 = MyString.trim(sh[i].getCell(1, j).getContents());//院校名称
String temp3 = MyString.trim(sh[i].getCell(2, j).getContents());//院校类别
String temp4 = MyString.trim(sh[i].getCell(3, j).getContents());//院校驻地

String sql_shopuser = "insert into gaoxiao(gxid," +
"gxcode," +
"gxname," +
"pid," +
"gxtype," +
"gxstatus) values(SEQ_GAOXIAO.NEXTVAL,?,?,?,?,?)";

pstatement = connection.prepareStatement(sql_shopuser); //将高校基本信息插入gaoxiao表中
pstatement.setInt(1,Integer.parseInt(temp1));
pstatement.setString(2,temp2);
pstatement.setInt(3,Integer.parseInt(temp4));
pstatement.setString(4, temp3);
pstatement.setString(5, "Y");

pstatement.executeUpdate();

pstatement.close();//及时关闭防止超出打开游标的最大数异常ORA-01000
}
}
return true;

catch (NumberFormatException e) {
return false;
}
catch (SQLException e) {
abortTransaction = true;
return false;
}
catch (Exception e) {
  相关解决方案