itext poi 学习之旅 (3)读取数据库信息并由excel展现出来

时间:2023-03-09 05:38:21
itext poi 学习之旅 (3)读取数据库信息并由excel展现出来

DBConnection.java

连接数据库操作

package com.zkbj.poi;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException; public class DBConnection {
private final String DBUrl = "jdbc:mysql://localhost:3306/****"; //1.修改数据库名
private final String DBDriver = "com.mysql.jdbc.Driver";
private final String username = "**";                   //2.修改成你的MySql登录名和密码
private final String password = "***";
private Connection con; public DBConnection() {
try {
Class.forName(DBDriver);
con = DriverManager.getConnection(DBUrl, username, password);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} public Connection getDB() {
return con;
} public void closeDb(ResultSet rs, PreparedStatement ps) {
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
// TODO Auto-generated catch block e.printStackTrace();
}
}
if (ps != null) {
try {
ps.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}

ProductDir.java

读取产品信息数据并导出execl格式数据

package com.zkbj.poi;

import java.io.FileOutputStream;
import java.io.OutputStream;
import java.sql.Connection;
import java.sql.ResultSet;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRichTextString;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook; public class ProductDirExcel {
public ProductDirExcel() throws Exception {
Connection con = null;
DBConnection db = new DBConnection();
con = db.getDB();
String sql = "select * from productdir";
ResultSet rs = con.createStatement().executeQuery(sql);
// 获取总列数
int CountColumnNum = rs.getMetaData().getColumnCount();
int i = 1;
// 创建Excel文档
HSSFWorkbook wb = new HSSFWorkbook();
// sheet 对应一个工作页
HSSFSheet sheet = wb.createSheet("productdir表中的数据"); //3.修改成你的Sheet
HSSFRow firstrow = sheet.createRow(0); // 下标为0的行开始
HSSFCell[] firstcell = new HSSFCell[CountColumnNum];
String[] names = new String[CountColumnNum];
names[0] = "产品ID"; //4.修改成你的数据库数据名称。
names[1] = "产品名称";
names[2] = "产品版本";
names[3] = "产品备注";
names[4] = "产品分类ID"; for (int j = 0; j < CountColumnNum; j++) {
firstcell[j] = firstrow.createCell((short) j);
firstcell[j].setCellValue(new HSSFRichTextString(names[j]));
}
while (rs.next()) {
// 创建电子表格的一行
HSSFRow row = sheet.createRow(i); // 下标为1的行开始
for (int j = 0; j < CountColumnNum; j++) {
// 在一行内循环
HSSFCell cell = row.createCell((short) j);
// 设置表格的编码集,使支持中文
// // 先判断数据库中的数据类型
// 将结果集里的值放入电子表格中
cell.setCellValue(new HSSFRichTextString(rs.getString(j + 1)));
}
i++;
}
// 创建文件输出流,准备输出电子表格
OutputStream out = new FileOutputStream("D:\\productdir.xls"); //5.修改成你创建Excel路径 并有这个文件展示数据
wb.write(out);
out.close();
System.out.println("数据库导出成功");
rs.close();
con.close();
} public static void main(String[] args) {
try {
@SuppressWarnings("unused")
ProductDirExcel excel = new ProductDirExcel();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

经过以上步骤可以使我们能够从数据库中导出数据并由Execel表示出来。

如果需要导出其他数据库只需要修改几组程序就可以完美表现出来,由于博主初学poi 所以对其Css设计还未了解。。。以后还会更新,期待我下次更新吧。。