import java.io.FileInputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
/**
* @author 作者:gzh
* @version 创建时间:2015-4-30上午11:26:13
* 类说明:
* 1.读取execl(只能读取.xls的execl,即只能读取03版的),如果是.xlsx类型的话 手工转化一下即可
* 2.应用的jar包是apache的poi系类的jar包和
* 3.ojdbc14.jar的数据库连接包。
**/
public class ExeclOperateMain {
/**
* 方法说明:
* @param args
* @return void
*/
public static void main(String[] args) throws Exception {
ExeclOperateMain e=new ExeclOperateMain();
e.getExcel();
System.out.println("Execl导入完成!");
}
/**
* 用于连接oracle数据库的方法
* 只需修改中的参数getConnection("url","用户名","密码");
*/
public Connection conn(){
try {
//第一步:加载JDBC驱动
Class.forName("oracle.jdbc.driver.OracleDriver");
//第二步:创建数据库连接
Connection con =DriverManager.getConnection("jdbc:oracle:thin:@192.168.1.202:1521:orcl", "mdb", "mdb");
return con;
}catch(ClassNotFoundException cnf){
System.out.println("驱动未找到!:"+cnf);
return null;
}catch(SQLException sqle){
System.out.println("不能连接数据库:"+sqle);
return null;
}
catch (Exception e) {
System.out.println("加载失败 JDBC/ODBC driver.");
return null;
}
}
/**
* excel表 的读取
* @throws Exception
*/
public void getExcel() throws Exception {
// 创建对Excel工作簿文件的引用
HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream("E:\Workspaces\pt-zt-v1.0\src\test.xls"));
// 创建对工作表的引用。
// 在Excel文档中,第一张工作表的缺省索引是0,
// 读取左上端单元
for (int i = 0; i < workbook.getNumberOfSheets(); i++) {// 循环sheet,3列
if(workbook.getSheetAt(i).getPhysicalNumberOfRows()>0){//行,6行
HSSFSheet childSheet = workbook.getSheetAt(i);
for(int rowi=1;rowi<40000;rowi++){
// || childSheet.getRow(rowi).getCell(0).equals("") || childSheet.getRow(rowi).getCell(0)==null
if(childSheet.getRow(rowi)==null) break;
String cell1=this.publicExcel(childSheet.getRow(rowi).getCell(0));
if(cell1==null) break;
//对于double类型的数据装换为string类型进行字符串截取 只取整数。
cell1=cell1.substring(0, cell1.length()-2);//2
String cell2=this.publicExcel(childSheet.getRow(rowi).getCell(1));//111
String cell3=this.publicExcel(childSheet.getRow(rowi).getCell(2));//422
//拼装插入数据库的sql
String insert="insert into pt_zt values('"+cell3+"','"+cell2+"','"+cell1+"')";
System.out.println("SQL:"+insert);
insert(insert);
}
}
}
}
/**
* execl数据格式的转换
* @param cell
* @return String
*/
public String publicExcel( HSSFCell cell){
String value = null;
switch (cell.getCellType()) {
case HSSFCell.CELL_TYPE_NUMERIC:
value = "" + cell.getNumericCellValue();
break;
case HSSFCell.CELL_TYPE_STRING:
value = cell.getStringCellValue();
break;
case HSSFCell.CELL_TYPE_BLANK:
;
break;
default:
}
return value;
}
/**
* 插入数据 只需要传入插入sql即可
* 插入sql的样例:insert into pt_zt values('sys_users','用户表');
* @param insert 插入语句
* @return int
* @throws SQLException
*/
public int insert(String insert) throws SQLException{
Connection conn = this.conn();
int re = 0;
try{
conn.setAutoCommit(false);//事物开始
Statement sm = conn.createStatement();
re = sm.executeUpdate(insert);//执行
if(re < 0){ //插入失败
conn.rollback(); //回滚
sm.close(); //关闭sm
conn.close(); //关闭连接
return re;
}
conn.commit(); //插入提交正常
System.out.println("一条已插入正常,sql="+insert);
sm.close();
conn.close();
return re;
}
catch(Exception e){
e.printStackTrace();
}
conn.close();
return 0;
}
}
全网最新最细最实用WPS零基础入门到精通全套教程!带你真正掌握WPS办公! 内含Excel基础操作、函数设计、数据透视表等
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号