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("")返回前端
相关文章
- JAVA多线程面试题_java多线程的实现方式
- java 汉字乱码_Java中文乱码问题
- JAVA数据库连接池_java与数据库的连接怎么实现
- Java重置_java设置定时任务一小时执行一次
- 从java到JavaScript(1),看Dart:对比Java/Go/Swift/Rust
- Java学习笔记之九java二维数组及其多维数组的内存应用拓展延伸详解编程语言
- Java生成和操作Excel文件详解编程语言
- Java操作MySQL数据库快速入门(java访问mysql)
- Java操作MySQL数据库:实现看似不可能的梦想(java连接mysql数据库)
- 实现使用Java代码实现MySQL数据库连接(java连接mysql数据库代码)
- Java操作Oracle数据库:实现数据库连接与访问(java连接oracle数据库)
- Java判断字符串是否符合yyyyMMdd日期格式详解编程语言
- Java问题-java进程占用内存过高,排查原因详解编程语言
- MySQL数据库开发实践:用 Java 开发中文应用(mysql中文java)
- Java编程操作Oracle数据库(java操作oracle)
- Java高效操作MySQL数据库(java写入mysql)
- 极速提升业务效率:利用Excel快速导入Oracle数据库(excel数据导入oracle)
- 使用Java连接MySQL实现查询功能(java连接mysql查询)
- Java实现Redis数据存储(java的redis)
- 使用Java连接SQL Server数据库,轻松实现数据交互(java连sqlserver)
- Java程序构建Oracle数据库直连(java直连oracle)
- 数据库一步一步教你Java如何恢复Oracle数据库(java恢复oracle)
- Java快速加载Oracle数据库(java加载oracle)
- 编程Oracle数据库中实现Java编程的突破之道(oracle使用java)