Jxl.jar
访问Excel的Jar包
注意:支持以.xls结尾的Excel文件,可能不支持.xlsx结尾的
下载地址:
程序所需要得包:
程序代码:
package partice; import java.io.File; import java.io.IOException; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.sql.Statement; import java.util.Date; import javax.swing.JOptionPane; import jxl.Workbook; import jxl.read.biff.BiffException; import jxl.write.Label; import jxl.write.WritableSheet; import jxl.write.WritableWorkbook; import jxl.write.WriteException; import jxl.write.biff.RowsExceededException; public class export { static ResultSet rs = null; static ResultSetMetaData rsData = null; static int sheetIndex = 0; // 计数器,起始为0 static int perPageSize = 60000;// excel2003每张表最大为65536行 static String fileName = "调剂学生信息.xls";// 新建的表格名称 static String URL = "jdbc:sqlserver://127.0.0.1:1433;DatabaseName=studentdatabase";// 数据库IP地址 static String DriverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver"; static String username = "sa";// 用户 static String password = "19940503";// 密码 public void main(String[] args) throws Exception { connectOracle(); } public void connectOracle() throws SQLException, ClassNotFoundException { Connection conn = null; Class.forName(DriverName); long begintime = System.currentTimeMillis(); try { System.out.println("数据库连接开始:" + new Date(System.currentTimeMillis())); conn = DriverManager.getConnection(URL, username, password); Statement state = conn.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); String sql = "select * from register"; rs = state.executeQuery(sql); rsData = rs.getMetaData();// 获得所需要的rs信息 rs.last(); int size = rs.getRow();// 列数 rs.beforeFirst(); int sheetsize = size / perPageSize + 1;// sheetsize是sheet的总页数 writeexcel(rs);// 新建一个excel,并且写入第一张表,每次只能写一张表 for (int i = 1; i < sheetsize; i++) { System.out.println(2); updateexcel(rs);// 写入后面的后面的表 } } catch (Exception e) { System.out.println("数据库连接错误"); e.printStackTrace(); } finally { conn.close(); System.out.println("数据库连接关闭!用时:" + (System.currentTimeMillis() - begintime) + "ms"); JOptionPane.showMessageDialog(null, "导出成功", "提示信息", JOptionPane.WARNING_MESSAGE); } } static void writeexcel(ResultSet rs) throws IOException, Exception, WriteException { WritableWorkbook book = Workbook.createWorkbook(new File(fileName)); WritableSheet sheet = book.createSheet("第" + (sheetIndex + 1) + "页", sheetIndex); int i = 1;// 每一页设为第一行 while (rs.next()) { for (int j = 1; j <= rsData.getColumnCount(); j++) { Label label = new Label(j - 1, i, rs.getString(j) == null ? "" : rs.getString(j).toString()); if (i == 1) {// 标题只加载第一次 Label titleLabel = new Label(j - 1, 0, rsData .getColumnName(j)); sheet.addCell(titleLabel); } sheet.addCell(label); } i++; if (i > perPageSize) { break; } } sheetIndex++; book.write(); book.close(); } static void updateexcel(ResultSet rs) throws BiffException, IOException, RowsExceededException, WriteException, SQLException { Workbook wb = Workbook.getWorkbook(new File(fileName)); WritableWorkbook book = Workbook.createWorkbook(new File(fileName), wb); WritableSheet sheet = book.createSheet("第" + (sheetIndex + 1) + "页 ", sheetIndex); int i = 1;// 每一页设为第一行 while (rs.next()) { for (int j = 1; j <= rsData.getColumnCount(); j++) { Label label = new Label(j - 1, i, rs.getString(j) == null ? "" : rs.getString(j).toString()); if (i == 1) {// 标题只加载第一次 Label titleLabel = new Label(j - 1, 0, rsData .getColumnName(j)); sheet.addCell(titleLabel); } sheet.addCell(label); } i++; if (i > perPageSize) { break; } } sheetIndex++; book.write(); book.close(); } }
对应数据库
java实现数据库导出ECXL表格:ttps://blog.csdn.net/captian_900331/article/details/49689199