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