zl程序教程

您现在的位置是:首页 >  后端

当前栏目

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

2023-06-13 09:14:52 时间
Java利用poi把数据库中数据导入Excel

效果:

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

核心代码:

连接数据库:DBConnection.java

复制代码代码如下:

packageorg.xg.db;
importjava.sql.Connection;
importjava.sql.DriverManager;
importjava.sql.PreparedStatement;
importjava.sql.ResultSet;
importjava.sql.SQLException;
publicclassDBConnection{
privatefinalStringDBUrl="jdbc:mysql://localhost:3306/notebook";
privatefinalStringDBDriver="com.mysql.jdbc.Driver";
privatefinalStringusername="root";
privatefinalStringpassword="riskfitfeng";
privateConnectioncon;
publicDBConnection()
{
try{
Class.forName(DBDriver);
con=DriverManager.getConnection(DBUrl,username,password);
}catch(Exceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}
publicConnectiongetDB()
{
returncon;
}
publicvoidcloseDb(ResultSetrs,PreparedStatementps)
{
if(rs!=null)
{
try{
rs.close();
}catch(SQLExceptione){
//TODOAuto-generatedcatchblock


e.printStackTrace();
}
}
if(ps!=null)
{
try{
ps.close();
}catch(SQLExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}
}
}

导入excel类:MySql2Excel.java

packageorg.xg.db;
importjava.io.FileOutputStream;
importjava.io.OutputStream;
importjava.sql.Connection;
importjava.sql.ResultSet;
importorg.apache.poi.hssf.usermodel.HSSFCell;
importorg.apache.poi.hssf.usermodel.HSSFRichTextString;
importorg.apache.poi.hssf.usermodel.HSSFRow;
importorg.apache.poi.hssf.usermodel.HSSFSheet;
importorg.apache.poi.hssf.usermodel.HSSFWorkbook;
publicclassMySql2Excel{
publicMySql2Excel()throwsException
{
Connectioncon=null;
DBConnectiondb=newDBConnection();
con=db.getDB();
Stringsql="select*fromstudents";
ResultSetrs=con.createStatement().executeQuery(sql);
//获取总列数
intCountColumnNum=rs.getMetaData().getColumnCount();
inti=1;
//创建Excel文档
HSSFWorkbookwb=newHSSFWorkbook();
//sheet对应一个工作页
HSSFSheetsheet=wb.createSheet("student表中的数据");
HSSFRowfirstrow=sheet.createRow(0);//下标为0的行开始
HSSFCell[]firstcell=newHSSFCell[CountColumnNum];
String[]names=newString[CountColumnNum];
names[0]="ID";
names[1]="学号";
names[2]="姓名";
names[3]="性别";
names[4]="班级";
for(intj=0;j<CountColumnNum;j++){
firstcell[j]=firstrow.createCell((short)j);
firstcell[j].setCellValue(newHSSFRichTextString(names[j]));
}
while(rs.next())
{
//创建电子表格的一行
HSSFRowrow=sheet.createRow(i);//下标为1的行开始
for(intj=0;j<CountColumnNum;j++)
{
//在一行内循环
HSSFCellcell=row.createCell((short)j);
//设置表格的编码集,使支持中文
////先判断数据库中的数据类型
//将结果集里的值放入电子表格中
cell.setCellValue(newHSSFRichTextString(rs.getString(j+1)));
}
i++;
}
//创建文件输出流,准备输出电子表格
OutputStreamout=newFileOutputStream("E:\\person.xls");
wb.write(out);
out.close();
System.out.println("数据库导出成功");
rs.close();
con.close();
}
publicstaticvoidmain(String[]args)
{
try{
@SuppressWarnings("unused")
MySql2Excelexcel=newMySql2Excel();
}catch(Exceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}
}



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

<ahref="ReportServlet"onclick="returnconfirm("确认数据导出到E:/下?");">导出数据到Excel</a>

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