场景:做企业级的应用的时候报表数据导出、导入是很常见的,为此有必要将其作为工作中指导的一部分,以资学习;唯求进步.
1、使用MySQl实现POI数据导出
1.1建立数据库连接
package com.boonya.poi;
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 = "root";
private Connection con;
public DBConnection()
{
try
{
Class.forName(dbDriver);
con = DriverManager.getConnection(dbUrl, username, password);
} catch (Exception e)
{
e.printStackTrace();
}
}
public Connection getDB()
{
return con;
}
public void closeDb(ResultSet rs, PreparedStatement ps)
{
if (rs != null)
{
try
{
rs.close();
} catch (SQLException e)
{
e.printStackTrace();
}
}
if (ps != null)
{
try
{
ps.close();
} catch (SQLException e)
{
e.printStackTrace();
}
}
}
}
1.2编写mysql数据导出对象实例
public class Trainee
{
private Integer Id; //选课号
private String studyNo; //学号
private String name; //姓名
private String college; //学院
private Integer courseId; //课程号
private String courseName;//课程名
private float score; //成绩
//getter,setter.....
}
1.3编写mysql数据导出操作
package com.boonya.poi;
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;
/**
* Mysql数据库数据导出
* <li>文件名称: MySql2Excel</li>
* <li>文件描述: $</li>
* <li> 内容摘要: 包括模块、函数及其功能的说明</li>
* <li>完成日期:2013-8-12</li>
* <li>修改记录1:boonyachengdu@gmail.com </li>
*
*/
public class MySqlExcel
{
@SuppressWarnings("deprecation")
public MySqlExcel() throws Exception
{
Connection con = null;
DBConnection db = new DBConnection();
con = db.getDB();
String sql = "select * from trainee";
ResultSet rs = con.createStatement().executeQuery(sql);
// 获取总列数
int CountColumnNum = rs.getMetaData().getColumnCount();
int i = 1;
// 创建Excel文档
HSSFWorkbook wb = new HSSFWorkbook();
// sheet 对应一个工作页
HSSFSheet sheet = wb.createSheet("trainee_table_data");
HSSFRow firstrow = sheet.createRow(0); // 下标为0的行开始
HSSFCell[] firstcell = new HSSFCell[CountColumnNum];
String[] names = new String[CountColumnNum];
names[0] = "ID";
names[1] = "StudyNo";
names[2] = "Name";
names[3] = "Gender";
names[4] = "Grade";
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("Export success!");
rs.close();
con.close();
}
public static void main(String[] args)
{
try
{
@SuppressWarnings("unused")
MySqlExcel excel = new MySqlExcel();
} catch (Exception e)
{
e.printStackTrace();
}
}
}
2、数据导入测试
package com.boonya.poi;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
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;
@SuppressWarnings("serial")
public class TraineeImportExample implements Serializable
{
//pattern singleton--------start
static final TraineeImportExample INSTANCE = new TraineeImportExample();
private TraineeImportExample()
{
//private的构造函数用于避免外界直接使用new来实例化对象
}
/**
* readResolve方法应对单例对象被序列化时候
*/
private Object readResolve()
{
return getInstance();
}
public static TraineeImportExample getInstance()
{
return TraineeImportExample.INSTANCE;
}
//pattern singleton--------end
/**
*
* @param xls
* XlsDto实体类的一个对象
* @throws Exception
* 在导入Excel的过程中抛出异常
*/
public void xlsExportExcel(List<Trainee> xls) throws Exception
{
// 获取总列数
int CountColumnNum = xls.size();
// 创建Excel文档
HSSFWorkbook hwb = new HSSFWorkbook();
Trainee xlsDto = null;
// sheet 对应一个工作页
HSSFSheet sheet = hwb.createSheet("Trainee_Score");
HSSFRow firstrow = sheet.createRow(0); // 下标为0的行开始
HSSFCell[] firstcell = new HSSFCell[CountColumnNum];
String[] names = new String[CountColumnNum];
names[0] = "StudyNo";
names[1] = "Name";
names[2] = "College";
names[3] = "CourseName";
names[4] = "Score";
for (int j = 0; j < CountColumnNum; j++)
{
firstcell[j] = firstrow.createCell(j);
firstcell[j].setCellValue(new HSSFRichTextString(names[j]));
}
for (int i = 0; i < xls.size(); i++)
{
// 创建一行
HSSFRow row = sheet.createRow(i + 1);
// 得到要插入的每一条记录
xlsDto = xls.get(i);
for (int colu = 0; colu <= 4; colu++)
{
// 在一行内循环
HSSFCell xh = row.createCell(0);
xh.setCellValue(xlsDto.getStudyNo());
HSSFCell xm = row.createCell(1);
xm.setCellValue(xlsDto.getName());
HSSFCell yxsmc = row.createCell(2);
yxsmc.setCellValue(xlsDto.getCollege());
HSSFCell kcm = row.createCell(3);
kcm.setCellValue(xlsDto.getCourseName());
HSSFCell cj = row.createCell(4);
cj.setCellValue(xlsDto.getScore());
}
}
// 创建文件输出流,准备输出电子表格
OutputStream out = new FileOutputStream("POIExcel/test.xls");
hwb.write(out);
out.close();
System.out.println("Export success!");
}
/**
* 得到Excel表中的值
*
* @param hssfCell
* Excel中的每一个格子
* @return Excel中每一个格子中的值
*/
@SuppressWarnings("static-access")
public String getValue(HSSFCell hssfCell)
{
if (hssfCell.getCellType() == hssfCell.CELL_TYPE_BOOLEAN)
{
// 返回布尔类型的值
return String.valueOf(hssfCell.getBooleanCellValue());
} else if (hssfCell.getCellType() == hssfCell.CELL_TYPE_NUMERIC)
{
// 返回数值类型的值
return String.valueOf(hssfCell.getNumericCellValue());
} else
{
// 返回字符串类型的值
return String.valueOf(hssfCell.getStringCellValue());
}
}
/**
* 读取xls文件内容
*
* @return List<XlsDto>对象
* @throws IOException
* 输入/输出(i/o)异常
*/
public List<Trainee> readXls() throws IOException
{
InputStream is = new FileInputStream("pldrxkxxmb.xls");
HSSFWorkbook hssfWorkbook = new HSSFWorkbook(is);
Trainee xlsDto = null;
List<Trainee> list = new ArrayList<Trainee>();
// 循环工作表Sheet
for (int numSheet = 0; numSheet < hssfWorkbook.getNumberOfSheets(); numSheet++)
{
HSSFSheet hssfSheet = hssfWorkbook.getSheetAt(numSheet);
if (hssfSheet == null)
{
continue;
}
// 循环行Row
for (int rowNum = 1; rowNum <= hssfSheet.getLastRowNum(); rowNum++)
{
HSSFRow hssfRow = hssfSheet.getRow(rowNum);
if (hssfRow == null)
{
continue;
}
xlsDto = new Trainee();
// 循环列Cell
// 0学号 1姓名 2学院 3课程名 4 成绩
// for (int cellNum = 0; cellNum <=4; cellNum++) {
HSSFCell xh = hssfRow.getCell(0);
if (xh == null)
{
continue;
}
xlsDto.setStudyNo(getValue(xh));
HSSFCell xm = hssfRow.getCell(1);
if (xm == null)
{
continue;
}
xlsDto.setName(getValue(xm));
HSSFCell yxsmc = hssfRow.getCell(2);
if (yxsmc == null)
{
continue;
}
xlsDto.setCollege(getValue(yxsmc));
HSSFCell kcm = hssfRow.getCell(3);
if (kcm == null)
{
continue;
}
xlsDto.setCourseName(getValue(kcm));
HSSFCell cj = hssfRow.getCell(4);
if (cj == null)
{
continue;
}
xlsDto.setScore(Float.parseFloat(getValue(cj)));
list.add(xlsDto);
}
}
return list;
}
public static void main(String[] args) throws IOException
{
TraineeImportExample xlsMain = new TraineeImportExample();
Trainee xls = null;
List<Trainee> list = xlsMain.readXls();
try
{
xlsMain.xlsExportExcel(list);
} catch (Exception e)
{
e.printStackTrace();
}
for (int i = 0; i < list.size(); i++)
{
xls = (Trainee) list.get(i);
System.out.println(xls.getStudyNo() + " " + xls.getName() + " " + xls.getCollege() + " " + xls.getCourseName() + " " + xls.getScore());
}
}
}
注:具体问题具体分析,这个可以提炼成为一个工具类,以后有时间再弄
分享到:
相关推荐
java_poi实现excel导入导出功能,有详细的注解
利用POI实现Excel的导入和导出实例的实现,外加poi的全部jar包
springboot+mybatis+poi 实现excel导入导出操作
Java使用poi实现excel导入导出,导入导出已做成通用方法,内附说明文档
用poi实现的excel导入导出,进行了很好的封装
JAVA实现数据库数据导入导出到Excel(POI)所需jar包
java实现excel的导入导出(poi详解),经过测试poi效率要比jxl要高很多,特别是数据量大的时候jxl根本无法用肉眼入目,本资源是个可运行项目demo,很有参考价值!
基于poi的excel导入导出封装,poi版本 <groupId>org.apache.poi <artifactId>poi <version>4.1.0 <groupId>org.apache.poi <artifactId>poi-ooxml <version>4.1.0 </dependency>
主要是springboot+myBatis+poi+mysql的使用,从数据库查询到结果集导出excel到本地,从本地中的excel文件导入到数据库中。
这是一个Excel表格导入与导出功能,Excel美化,并且添加了进度条,丢上Eclipse直接运行使用,附带测试数据与说明。Java项目使用maven搭建。
该文件中包含了所有java项目中...将该zip解压后,将jar包加入到自己的项目中,可以直接通过poi的api在excel和项目数据进行导入导出。 应用场景:如 excel格式对账单导出,将数据库数据导出到excel中(带样式字体等)。
利用POI实现excel导入,导出,解析实例
可以实现POI的批量导入与导出。
通过JXL、POI两种技术分别实现Excel的导入导出
java 开发中Poi操作excel批量导入导出项目需要的jar包
POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI...
poi excel 导入 导出poi excel 导入 导出poi excel 导入 导出poi excel 导入 导出poi excel 导入 导出poi excel 导入 导出
使用poi包操作excel的导入和导出!
使用JSP+jqueryUI+java Servlet通过Apache POI实现Excel导入导出
POI导入导出合集POI导入导出合集POI导入导出合集POI导入导出合集POI导入导出合集POI导入导出合集