急……用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.par