欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Java 使用poi把数据库中数据导入Excel的解决方法

程序员文章站 2023-12-09 18:08:51
java 利用poi把数据库中数据导入excel 效果: 使用时先把poi包导入工程的path,注意只需要导入poi包即可,下载后有三个jar包 核心代码: 连...
java 利用poi把数据库中数据导入excel

效果:

Java 使用poi把数据库中数据导入Excel的解决方法

使用时先把poi包导入工程的path,注意只需要导入poi包即可,下载后有三个jar包

核心代码:

连接数据库:dbconnection.java

复制代码 代码如下:

package org.xg.db;
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/notebook" ;
private final string dbdriver ="com.mysql.jdbc.driver" ;
private final string username ="root" ;
private final string password ="riskfitfeng" ;
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();
}
}
}
}

导入excel类:mysql2excel.java

package org.xg.db;
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 mysql2excel {
public mysql2excel() throws exception
{
connection con = null ;
dbconnection db = new dbconnection() ;
con = db.getdb() ;
string sql ="select * from students" ;
resultset rs = con.createstatement().executequery(sql) ;
// 获取总列数
int countcolumnnum = rs.getmetadata().getcolumncount() ;
int i =1 ;
// 创建excel文档
hssfworkbook wb = new hssfworkbook() ;
// sheet 对应一个工作页
hssfsheet sheet = wb.createsheet("student表中的数据") ;
hssfrow firstrow = sheet.createrow(0); //下标为0的行开始
hssfcell[] firstcell = new hssfcell[countcolumnnum];
string[] names = new string[countcolumnnum];
names[0] ="id";
names[1] ="学号";
names[2] ="姓名";
names[3] ="性别";
names[4] ="班级";
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("e:\\person.xls") ;
wb.write(out) ;
out.close() ;
system.out.println("数据库导出成功") ;
rs.close() ;
con.close() ;
}
public static void main(string[] args)
{
try {
@suppresswarnings("unused")
mysql2excel excel = new mysql2excel() ;
} catch (exception e) {
// todo auto-generated catch block
e.printstacktrace();
}
}
}



例如你可以在前端jsp中这样调用:

<a href="reportservlet" onclick="return confirm('确认数据导出到e:/下?');">导出数据到excel</a>

后台servlet写上上面的代码,注意最后需要response.sendredirect("") 返回前端