package com.svr.util;
import com.mysql.jdbc.Connection;
import com.mysql.jdbc.Statement;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import java.io.FileOutputStream;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
public class ExportUtil {
//TODO 需要将url\用户名\密码修改为自己的
// @Value("${spring.datasource.url}")
// public static String url;
// @Value("${spring.datasource.username}")
// public static String user;
// @Value("${spring.datasource.password}")
// public static String password ;
public final static String url = "jdbc:mysql://127.0.0.1:3306/glw_db";
public final static String user = "root";
public final static String password = "123456";
// 把数据库单张表信息导入到Excel表中
public static void main(String[] args) throws Exception {
// 架子啊数据库驱动
Class.forName("com.mysql.jdbc.Driver");
// 连接数据库
Connection con = (Connection) DriverManager.getConnection(url, user,
password);
// 创建Excel表。
Workbook book = new HSSFWorkbook();
// DatabaseMetaData dbmt = con.getMetaData();
// 获得blog数据库
//TODO 需要将blog修改为你指定的数据库
// ResultSet rs = dbmt.getTables("blog", "blog", null, new String[] {
// "TABLE", "VIEW" });
// 设置要转化为Excel的表
//TODO 需要将Table_Name修改为当前数据库中你想导出的数据表
String Table_Name = "inventory";
// while (rs.next()) {
// if ("team".equals(rs.getString("TABLE_NAME"))) {
// Table_Name = "team";
// break;
// }
// }
// 在当前Excel创建一个子表
Sheet sheet = book.createSheet(Table_Name);
Statement st = (Statement) con.createStatement();
// 创建sql语句,对team进行查询所有数据
String sql = "select * from " + Table_Name;
ResultSet rs = st.executeQuery(sql);
// 设置表头信息(写入Excel左上角是从(0,0)开始的)
Row row1 = sheet.createRow(0);
ResultSetMetaData rsmd = rs.getMetaData();
int colnum = rsmd.getColumnCount();
for (int i = 1; i <= colnum; i++) {
String name = rsmd.getColumnName(i);
// 单元格
Cell cell = row1.createCell(i - 1);
// 写入数据
cell.setCellValue(name);
}
// 设置表格信息
int idx = 1;
while (rs.next()) {
// 行
Row row = sheet.createRow(idx++);
for (int i = 1; i <= colnum; i++) {
String str = rs.getString(i);
// 单元格
Cell cell = row.createCell(i - 1);
// 写入数据
cell.setCellValue(str);
}
}
// 保存
book.write(new FileOutputStream("D://" + Table_Name + ".xls"));
}
/**
* 用POI给Excel文件加
* 密
* @param filePath
* @param pwd
* @throws Exception
*/
/**
* excel加密、解密 代码
*
* @author lifq
* @date 2015-3-13 下午02:13:24
*/
/**
* 读取excel,并进行加密
*
* @param url
* excel文件路径 例:D:\\word.xls
* @param pwd
* 加密密码
*/
// public static void encrypt(String url, String pwd) {
// View m_view = new View();
// try {
// // read excel
// m_view.read(url);
// // set the workbook open password
// m_view.write(url, pwd);
// } catch (CellException e) {
// e.printStackTrace();
// } catch (IOException e) {
// e.printStackTrace();
// }
// }
//
// /**
// * excel 解密
// *
// * @return void
// * @author lifq
// * @date 2015-3-13 下午02:15:49
// */
// public static void decrypt(String url, String pwd) {
// View m_view = new View();
// try {
// // read the encrypted excel file
// m_view.read(url, pwd);
//
// // write without password protected
// m_view.write(url);
// } catch (Exception e) {
// System.out.println(e.getMessage());
// }
// }
// public static void main(String args[]) {
// // 下面1与2 两个方法请分开执行,可以看到效果
// //
// //1. 把g:\\test.xls 添加打开密码123
// EncryptDecryptUtil.encrypt("g:\\test.xls", "123");
// //2. 把g:\\test.xls 密码123 去除
// EncryptDecryptUtil.decrypt("g:\\test.xls", "123");
//
// }
}
POI报表把数据库表转为excel
最新推荐文章于 2022-10-31 15:35:54 发布