package shiyan;
import java.io.File;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Iterator;
import jxl.Workbook;
import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;
import jxl.write.biff.RowsExceededException;
/**
* 利用jxl.jar实现数据库中的表信息导出Excel中
*
* @author Administrator
*
*/
public class WriExcel {
// 声明Excel表
WritableWorkbook book = null;
/**
* 通过传入(保存表信息的ArrayList,Excel存放路径位置)
*
* @param arlist
* 数据库中的表信息添加到ArrayList中
* @param Path
* Excel表存放的路径位置
*/
public void OutputExcel(ArrayList<MarkesData> arlist, String Path) {
try {
// 根据路径实例化Excel表
book = Workbook.createWorkbook(new File(Path));
// 设置工作表名
WritableSheet sheet = book.createSheet("考试单", 0);
// 在单元格中生成表格题头
Label labe1 = new Label(0, 0, "考生姓名");
Label labe2 = new Label(1, 0, "地区");
Label labe3 = new Label(2, 0, "所属院校");
Label labe4 = new Label(3, 0, "班级");
Label labe5 = new Label(4, 0, "考试号");
// 将生成的单元格添加到工作表中
sheet.addCell(labe1);
sheet.addCell(labe2);
sheet.addCell(labe3);
sheet.addCell(labe4);
sheet.addCell(labe5);
// 利用迭代器获取ArrayList中的信息
Iterator<MarkesData> it = arlist.iterator();
// i表示单元格所在的行数
int i = 1;
// while循环依次将数据写入Excel单元格中
while (it.hasNext()) {
// 通过迭代获得arlist里的MarkesData对象
MarkesData temp = (MarkesData) it.next();
// 取得数据生成单元格
Label label1 = new Label(0, i, temp.getUser_name());
Label label2 = new Label(1, i, temp.getArea_name());
Label label3 = new Label(2, i, temp.getCollege_name());
Label label4 = new Label(3, i, temp.getClass_name());
Label label5 = new Label(4, i, temp.getTest_name());
// 将生成的单元格添加到工作表中
sheet.addCell(label1);
sheet.addCell(label2);
sheet.addCell(label3);
sheet.addCell(label4);
sheet.addCell(label5);
// 增加行数
i++;
}
// 表实行写操作
book.write();
// 关闭表
book.close();
} catch (RowsExceededException e) {
e.printStackTrace();
} catch (WriteException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (book != null)
book.close();
} catch (Exception e) {
System.out
.println("exception when closing Connection in finally");
System.out.println(e.getMessage().toString());
}
}
}
/**
* 进行数据库操作,从数据库中获取表信息
*
* @return 返回数据库中保存的表信息,保存在ArrayList中
*/
public ArrayList<MarkesData> connection() {
Connection conn = null;
try {
// 进行数据库连接操作
String dbURL = "jdbc:sqlserver://localhost:1433; DatabaseName=excel";
String userName = "sa"; // 默认用户名
String userPwd = "sql2005"; // 密码
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
conn = DriverManager.getConnection(dbURL, userName, userPwd);
Statement state = conn.createStatement();
String sql = "select * from data ";
// 执行sql语句获取数据库中的表信息,并放到ResultSet中
ResultSet rs = state.executeQuery(sql);
// 创建ArrayList,保存数据库信息
ArrayList<MarkesData> list = new ArrayList<MarkesData>();
while (rs.next()) {
MarkesData md = new MarkesData();
String user_name = rs.getString("user_name");
String area_name = rs.getString("area_name");
String college_name = rs.getString("college_name");
String class_name = rs.getString("class_name");
String test_name = rs.getString("test_name");
md.setUser_name(user_name);
md.setArea_name(area_name);
md.setCollege_name(college_name);
md.setClass_name(class_name);
md.setTest_name(test_name);
list.add(md);
}
rs.close();
state.close();
return list;
} catch (Exception e) {
e.printStackTrace();
} finally {
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
return null;
}
public static void main(String[] args) {
WriExcel w = new WriExcel();
// 从数据库获取表信息
ArrayList<MarkesData> arlist = w.connection();
// 根据表信息和路径向Excel中写数据
w.OutputExcel(arlist, "e:\\1.xls");
}
}
评论2
最新资源