所需jar包:点击打开链接
jxl-2.6.10.rar odjbc14.jar
1、首先创建数据库连接
package excel;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
/**
* Oracle数据库连接
*
* @author
*/
public class DBUtils {
private Connection conn = null;
private Statement stmt = null;
private ResultSet rs = null;
/** Oracle数据库连接 URL */
private final static String DB_URL = "jdbc:oracle:thin:@192.168.2.162:1521:orcl";
/** Oracle数据库连接驱动 */
private final static String DB_DRIVER = "oracle.jdbc.driver.OracleDriver";
/** 数据库用户名 */
private final static String DB_USERNAME = "hefx0323";
/** 数据库密码 */
private final static String DB_PASSWORD = "1";
/**
* 获取数据库连接
*
* @return
*/
public Connection getConnection() {
/** 声明Connection连接对象 */
Connection conn = null;
try {
/** 使用 Class.forName()方法自动创建这个驱动程序的实例且自动调用DriverManager来注册它 */
Class.forName(DB_DRIVER);
/** 通过 DriverManager的getConnection()方法获取数据库连接 */
conn = DriverManager
.getConnection(DB_URL, DB_USERNAME, DB_PASSWORD);
stmt = conn.createStatement();
} catch (Exception ex) {
ex.printStackTrace();
}
return conn;
}
/**
* 查询数据部分
*
* @return ResultSet
*/
public ResultSet executeQuery(String sqlStr) {
if (sqlStr == null || sqlStr.length() == 0)
return null;
try {
this.getConnection();
rs = stmt.executeQuery(sqlStr);
return rs;
} catch (SQLException ex) {
ex.printStackTrace();
return null;
}
}
/**
* 更新数据部分
*
* @return 更新是否成功
*/
public boolean executeUpdate(String sqlStr) {
if (sqlStr == null || sqlStr.length() == 0)
return false;
try {
this.getConnection();
stmt.executeUpdate(sqlStr);
return true;
} catch (SQLException ex) {
ex.printStackTrace();
return false;
} finally {
try {
if (stmt != null) {
stmt.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
try {
if (conn != null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public void closeStmt() {
try {
if (stmt != null) {
stmt.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 关闭数据库连接
*
* @param connect
*/
public void closeConnection() {
try {
if (conn != null) {
/** 判断当前连接连接对象如果没有被关闭就调用关闭方法 */
if (!conn.isClosed()) {
conn.close();
}
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
2、Excel数据导入oracle
创建表格
package excel;
import java.io.File;
import java.io.IOException;
import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;
/**
* excel数据导入到oracle
*
* @author
*
*/
public class excelToOracle {
public static void main(String[] args) throws Exception {
excelToOracle in = new excelToOracle();
in.insert("C:/Users/EBARA/Desktop/test.xls", "exceltest");
}
/**
*
* @param path
* 要解析的excel文件路径
* @param dataTable
* 要写入到数据库中的表名
* @throws BiffException
* @throws IOException
*/
public void insert(String path, String dataTable) throws BiffException,
IOException {
File file = new File(path);
// 创建新的Excel 工作簿
Workbook wb = null;
wb = Workbook.getWorkbook(file);
// 得到工作簿中的第一个表索引即为excel下的sheet1,sheet2,sheet3...
Sheet sheet = wb.getSheets()[0];
int cols = sheet.getColumns();// 列数
int rows = sheet.getRows();// 行数
String data = "";// 每个单元格中的数据
DBUtils jdbc = new DBUtils();
// 拼接要插入的列对应的字段名字,此处要求xls表格第一行的列名应与数据库字段名对应
String str = "";
for (int j = 0; j < cols; j++) {
Cell cell = sheet.getCell(j, 0);
data = cell.getContents();
if (j == cols - 1) {
str += data;
} else {
str += data + ",";
}
}
// 插入的数据从第二行开始
for (int i = 1; i < rows; i++) {
String sql = "insert into " + dataTable + "(" + str + ") values(";// 拼接sql
System.out.println(str);
for (int j = 0; j < cols; j++) {
Cell cell = sheet.getCell(j, i);
data = cell.getContents();
if (j == cols - 1) {
sql += "'" + data + "'";
} else {
sql += "'" + data + "',";
}
}
sql += " )";
jdbc.executeUpdate(sql);// 执行sql
}
jdbc.closeStmt();
jdbc.closeConnection();
}
}
注意:
不支持*.xlsx格式,请将Excel文档另存为*.xls。(只改文档后缀名是不管用的,必须另存为)
结果:
2、oracle数据导出到Excel
创建实体类
package excel;
public class person {
String name;
String sex;
String age;
String hobby;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getHobby() {
return hobby;
}
public void setHobby(String hobby) {
this.hobby = hobby;
}
}
导出代码
package excel;
import java.io.File;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import jxl.Workbook;
import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
public class exportExcel {
public void createXLS() {
DBUtils jdbc = new DBUtils();
Connection conn = null;
try {
conn = jdbc.getConnection();
Date now = new Date();
SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");
String nowdate = df.format(now);
// 打开文件
WritableWorkbook book = Workbook.createWorkbook(new File("d:/"
+ nowdate + ".xls"));
System.out.println(book);
System.out.println(nowdate + ".xls");
// 生成名为"第一页"的工作表,参数0表示这是第一
WritableSheet sheet = book.createSheet("第一页", 0);
// 创建预编译语句对象,一般都是用这个而不用Statement
PreparedStatement pre = null;
// 创建一个结果集对象
ResultSet rs = null;
String sql = "select * from EXCELTEST";// 预编译语句
pre = conn.prepareStatement(sql);// 实例化预编译语句
rs = pre.executeQuery();// 执行查询,注意括号中不需要再加参数
// 查询数据库中所有的数据
List<person> list = new ArrayList<person>();
while (rs.next()) {
// 创建person对象
person p = new person();
p.name = rs.getString("name");
p.age = rs.getString("age");
p.sex = rs.getString("sex");
p.hobby = rs.getString("hobby");
// 将person放入list中
list.add(p);
}
// 首行标题
Label labelA0 = new Label(0, 0, "姓名");
Label labelB0 = new Label(1, 0, "性别");
Label labelC0 = new Label(2, 0, "年龄");
Label labelD0 = new Label(3, 0, "爱好");
sheet.addCell(labelA0);
sheet.addCell(labelB0);
sheet.addCell(labelC0);
sheet.addCell(labelD0);
for (int i = 0; i < list.size(); i++) {
Label labelAi = new Label(0, i + 1, list.get(i).getName());
Label labelBi = new Label(1, i + 1, list.get(i).getSex());
Label labelCi = new Label(2, i + 1, list.get(i).getAge());
Label labelDi = new Label(3, i + 1, list.get(i).getHobby());
sheet.addCell(labelAi);
sheet.addCell(labelBi);
sheet.addCell(labelCi);
sheet.addCell(labelDi);
}
// 写入数据并关闭文件
book.write();
book.close();
System.out.println("创建文件成功!");
} catch (Exception e) {
System.out.println(e);
}
}
public static void main(String[] args) {
new exportExcel().createXLS();
}
}
结果展示: