使用POI将mysql中的表格转出为Excel文件

本文介绍如何使用Java从MySQL数据库中读取数据并将其转换为Excel文件的方法,包括设置Excel表格属性、连接数据库及查询数据等步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

       许多网页中提供了下载数据表格的功能,但是又不能直接将数据库的表格提供给用户下载,因此常常将数据库中的表格转换为Excel或者pdf文件,Apache POI为Java程序提供了可以对Microsoft office文档进行读和写操作的api。本篇将总结从mysql数据库中将数据转出为Excel表格的过程。

一、创建一个java工程,名叫ReadDatabase,并且导入mysql和poi的相应jar包:


二、编写一个java类名叫ReadExcelFromDB,意为从数据库获取读取数据转为Excel。为了表格的美观,最好在类中提前给Excel表格设置一些属性,例如列宽,字体居中等等:

package com.sun.read;

import java.io.File;
import java.io.FileOutputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.HorizontalAlignment;

public class ReadExcelFromDB {
	//字段名数组
//	private static final String[] tableHeader={"id","username",
//			"password","salt","email","mobile","valid","deptId",
//			"createdTime","modifiedTime","createdUser","modifiedUser"};
	//设置列宽
	private static final int[] colWidth={2000,2000,5000,5000,
			5000,5000,2000,2000,6000,6000,5000,5000};
	//文件路径
	private static String outPutFile="."+File.separator+"user.xls";
	//数据库连接参数
	private static String url="jdbc:mysql://localhost:3306/jtsys";
	private static String user="root";
	private static String password="root";
	
	public static void main(String[] args) throws SQLException {
		Connection conn = null;
		PreparedStatement ps = null;
		ResultSet rs = null;
		try {
			//连接数据库查询数据
			Class.forName("com.mysql.jdbc.Driver");
			conn=DriverManager.getConnection(url, user, password);
			String sql="select * from sys_users";
			ps=conn.prepareStatement(sql);
			//获取结果集
			rs = ps.executeQuery();
			//用于获取字段的描述信息,比如字段名
			ResultSetMetaData metaData = rs.getMetaData();
			//创建workBook对象
			HSSFWorkbook workBook=new HSSFWorkbook();
			//在workBook对象中创建一张表格
			HSSFSheet sheet= workBook.createSheet("sys_users");
			//设置每一列的宽度
			for(int i=0;i<colWidth.length;i++){
				sheet.setColumnWidth(i, colWidth[i]);
			}
			//单元格样式对象
			HSSFCellStyle cellStyle = workBook.createCellStyle();
			//设置文本居中
			cellStyle.setAlignment(HorizontalAlignment.CENTER);
			//创建第0行,作为表格的表头
			HSSFRow row=sheet.createRow(0);
			HSSFCell cell=null;
			for(int i=0;i<colWidth.length;i++){
				cell=row.createCell(i);
				//动态获取字段名
				cell.setCellValue(metaData.getColumnLabel(i+1));
				cell.setCellStyle(cellStyle);
			}
			int rowIndex=1;
			while(rs.next()){
				//循环将查询出来的数据封装到表格的一行中
				row=sheet.createRow(rowIndex);
				for(int i=0;i<colWidth.length;i++){
					cell=row.createCell(i);
					cell.setCellValue(rs.getString(i+1));
					cell.setCellStyle(cellStyle);
				}
				rowIndex++;
			}
			FileOutputStream fos=new FileOutputStream(outPutFile);
			//输出流将文件写到硬盘
			workBook.write(fos);
			fos.flush();
			fos.close();
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			rs.close();
			ps.close();
			conn.close();
		}
	}
}

三、执行该类的main方法,可以在该路径下找到新生成的user.xls文件,本次测试将文件定义在本项目路径之下,打开文件以后可以发现mysql中的数据已经成功导入Excel文件:



评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值