今天下午同事要将数据库中的数据导入Excel我帮忙写了个小程序。写的虽然不好但是实现的很快,留此作为纪念,望大侠们勿拍。
此程序其实最主要的就是一个jar包——jxl.jar
——JDBC
package sanyuan;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class JDBC {
/**
* @param args
* @throws ClassNotFoundException
* @throws SQLException
*/
public Connection getConnection() {
String driver = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://127.0.0.1:3306/mmss_db";
String user = "root";
String password = "system";
Connection conn = null;
try {
Class.forName(driver);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
conn = DriverManager.getConnection(url, user, password);
if (!conn.isClosed())
System.out.println("Succeeded connecting to the Database!");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return conn;
}
}
——实现类
package sanyuan;
import java.io.File;
import java.io.IOException;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import jxl.Workbook;
import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
/**
* @version 1.0
* @author zhengyu 主要是用来创建excel工作薄
*/
public class Java_App {
/**
* 按照数据库中查询到的结果集创建一个新的工作薄,建议传入参数为Resultset结果集
*
* @param fileName
* 包含文件的路径以及文件名
* @param rs
* @throws Exception
*/
public void WriteExcel(File fileName, ResultSet rs) throws Exception {
// 创建一个新的工作薄,fileName 包含了文件名以及路径。
WritableWorkbook wwb = null;
WritableSheet ws = null;
try {
wwb = Workbook.createWorkbook(fileName);
ws = wwb.createSheet("sheettest", 0);// 给工作薄添加一个工作表,命名为 sheettest.
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
int i = 0;
int j = 0;
// 下面for循环里面的rs.getMetaData().GetColumnCount() 获取数据库中某个表的列总数
for (int k = 0; k < rs.getMetaData().getColumnCount(); k++) {
// rs.getMetaData().getColumnName()获取表的列名。并添加到 excel表Label里
ws.addCell(new Label(k, 0, rs.getMetaData().getColumnName(k + 1)));
}
while (rs.next()) {
// 算法,依次添加数据库中所有符合的数据到excel中
for (int k = 0; k < rs.getMetaData().getColumnCount(); k++) {
ws.addCell(new Label(k, j + i + 1, rs.getString(k + 1)));
}
i++;
}
wwb.write();// 写入工作薄
wwb.close();// 关闭工作薄
rs.close();// 关闭结果集
}
public static void main(String[] args) {
Java_App mexel = new Java_App();
JDBC myjdbc = new JDBC();
myjdbc.getConnection();
String sql = "select * from location";
Statement stm = null;
ResultSet rs = null;
File newFile = new File("d:\\location.xls");
try {
stm = myjdbc.getConnection().createStatement();
rs = stm.executeQuery(sql);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
mexel.WriteExcel(newFile, rs);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
myjdbc.getConnection().close();
// 关闭数据库连接
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}