Java实现指定数据表导出生成Excel

水深无声 2022-06-09 00:40 232阅读 0赞

1. 前言:

在开发过程中往往少不了自动生成excel,比如学校教务系统,医疗系统,公司财务或者是公司员工的工资预览表都会使用。

2. 准备阶段:

1、Java开发环境

2、所需要的jar包:
(1)MySQL-connector-java-5.1.12-bin.jar
(2)poi-3.17-beta1.jar

这里提供了相关的jar包链接:

链接:http://pan.baidu.com/s/1dFeVOHj 密码:sgl1

3. 实例

3.1 通过java生成Excel文件,并且能添加内容进去

  1. package cn.ink.excel;
  2. import java.io.FileOutputStream;
  3. import org.apache.poi.hssf.usermodel.HSSFWorkbook;
  4. import org.apache.poi.ss.usermodel.Sheet;
  5. import org.apache.poi.ss.usermodel.Cell;
  6. import org.apache.poi.ss.usermodel.Row;
  7. import org.apache.poi.ss.usermodel.Workbook;
  8. public class FromDbToExcelTest01 {
  9. public static void main(String[] args) throws Exception {
  10. // 建立一个Excel
  11. Workbook book = new HSSFWorkbook();
  12. // 在对应的Excel中建立一个分表
  13. Sheet sheet1 =(Sheet) book.createSheet("分表1");
  14. // 设置相应的行(初始从0开始)
  15. Row row =sheet1.createRow(0);
  16. // 在所在的行设置所在的单元格(相当于列,初始从0开始,对应的就是A列)
  17. Cell cell = row.createCell(0);
  18. // 写入相关数据到设置的行列中去。
  19. cell.setCellValue("相关数据");
  20. // 保存到计算机相应路径
  21. book.write( new FileOutputStream("D://a.xls"));
  22. }
  23. }

这里写图片描述

3.2 读出对应数据库表中的内容

  1. package cn.ink.excel;
  2. import java.sql.DatabaseMetaData;
  3. import java.sql.DriverManager;
  4. import java.sql.ResultSet;
  5. import java.sql.ResultSetMetaData;
  6. import java.util.ArrayList;
  7. import java.util.List;
  8. import com.mysql.jdbc.Connection;
  9. import com.mysql.jdbc.Statement;
  10. public class Test03 {
  11. //TODO 需要将url\用户名\密码修改为自己的
  12. public final static String url = "jdbc:mysql://127.0.0.1:3306/blog";
  13. public final static String user = "root";
  14. public final static String password = "123456";
  15. public static void main(String[] args) {
  16. try {
  17. Class.forName("com.mysql.jdbc.Driver");
  18. // 连接数据库
  19. Connection con = (Connection) DriverManager.getConnection(url,
  20. user, password);
  21. DatabaseMetaData dbmt = con.getMetaData();
  22. // 拿到所有的blog数据库中所有信息
  23. // TODO 需要将blog修改为自己的数据库
  24. ResultSet rs = dbmt.getTables("blog", "blog", null, new String[] {
  25. "TABLE", "VIEW" });
  26. List<String> tablenames = new ArrayList<String>();
  27. while (rs.next()) {
  28. String tablename = rs.getString("TABLE_NAME");
  29. tablenames.add(tablename);
  30. }
  31. for (String tablename : tablenames) {
  32. System.out.println(tablename + "表:");
  33. String sql = "select * from " + tablename;
  34. Statement st = (Statement) con.createStatement();
  35. ResultSet dataRs = st.executeQuery(sql);
  36. ResultSetMetaData rsmt = dataRs.getMetaData();
  37. // 拿到列数
  38. int colnums = rsmt.getColumnCount();
  39. for (int i = 1; i <= colnums; i++) {
  40. // 拿到表头信息
  41. String colName = rsmt.getColumnName(i);
  42. System.out.print(colName + "\t");
  43. }
  44. System.out.println();
  45. while (dataRs.next()) {
  46. for (int i = 1; i <= colnums; i++) {
  47. // 拿到表信息
  48. System.out.print(dataRs.getString(i) + "\t");
  49. }
  50. System.out.println();
  51. }
  52. }
  53. con.close();
  54. } catch (Exception e) {
  55. e.printStackTrace();
  56. }
  57. }
  58. }

这里写图片描述

3.3 将指定数据库中指定数据表导出到Excel中

  1. package cn.ink.excel;
  2. import java.io.FileOutputStream;
  3. import java.sql.DriverManager;
  4. import java.sql.ResultSet;
  5. import java.sql.ResultSetMetaData;
  6. import org.apache.poi.hssf.usermodel.HSSFWorkbook;
  7. import org.apache.poi.ss.usermodel.Cell;
  8. import org.apache.poi.ss.usermodel.Row;
  9. import org.apache.poi.ss.usermodel.Sheet;
  10. import org.apache.poi.ss.usermodel.Workbook;
  11. import com.mysql.jdbc.Connection;
  12. import com.mysql.jdbc.Statement;
  13. public class FromOneSheetToExcel {
  14. //TODO 需要将url\用户名\密码修改为自己的
  15. public final static String url = "jdbc:mysql://127.0.0.1:3306"; // 数据库URL
  16. public final static String user = "root"; // 数据库用户名
  17. public final static String password = "123456"; // 数据库密码
  18. // 把数据库单张表信息导入到Excel表中
  19. public static void main(String[] args) throws Exception {
  20. // 架子啊数据库驱动
  21. Class.forName("com.mysql.jdbc.Driver");
  22. // 连接数据库
  23. Connection con = (Connection) DriverManager.getConnection(url, user,
  24. password);
  25. // 创建Excel表。
  26. Workbook book = new HSSFWorkbook();
  27. // DatabaseMetaData dbmt = con.getMetaData();
  28. // 获得blog数据库
  29. //TODO 需要将blog修改为你指定的数据库
  30. // ResultSet rs = dbmt.getTables("blog", "blog", null, new String[] {
  31. // "TABLE", "VIEW" });
  32. // 设置要转化为Excel的表
  33. //TODO 需要将Table_Name修改为当前数据库中你想导出的数据表
  34. String Table_Name = "team";
  35. // while (rs.next()) {
  36. // if ("team".equals(rs.getString("TABLE_NAME"))) {
  37. // Table_Name = "team";
  38. // break;
  39. // }
  40. // }
  41. // 在当前Excel创建一个子表
  42. Sheet sheet = book.createSheet(Table_Name);
  43. Statement st = (Statement) con.createStatement();
  44. // 创建sql语句,对team进行查询所有数据
  45. String sql = "select * from blog." + Table_Name;
  46. ResultSet rs = st.executeQuery(sql);
  47. // 设置表头信息(写入Excel左上角是从(0,0)开始的)
  48. Row row1 = sheet.createRow(0);
  49. ResultSetMetaData rsmd = rs.getMetaData();
  50. int colnum = rsmd.getColumnCount();
  51. for (int i = 1; i <= colnum; i++) {
  52. String name = rsmd.getColumnName(i);
  53. // 单元格
  54. Cell cell = row1.createCell(i - 1);
  55. // 写入数据
  56. cell.setCellValue(name);
  57. }
  58. // 设置表格信息
  59. int idx = 1;
  60. while (rs.next()) {
  61. // 行
  62. Row row = sheet.createRow(idx++);
  63. for (int i = 1; i <= colnum; i++) {
  64. String str = rs.getString(i);
  65. // 单元格
  66. Cell cell = row.createCell(i - 1);
  67. // 写入数据
  68. cell.setCellValue(str);
  69. }
  70. }
  71. // 保存
  72. book.write(new FileOutputStream("D://" + Table_Name + ".xls"));
  73. }
  74. }

这里写图片描述

发表评论

表情:
评论列表 (有 0 条评论,232人围观)

还没有评论,来说两句吧...

相关阅读