java技术--POI导出Excel(将数据库数据导出为Excel)
程序员文章站
2022-06-02 18:27:36
...
1.将数据有Excel导入数据库或者将数据库数据导入Excel,作为业务常用需求。
2.实现的方式主要有三种技术:POI,JXL,FASTExcel,这里对比前两种
(1)JXL:优缺点
<1>操作简单,效率低,部分支持
<2>可以修饰单元格属性,格式支持没有POI强大
<3>支持字体,数字,日期操作
(2)POI:优缺点
<1>效率高,操作相对复杂,支持公式,宏,图像图表
<2> 可以修饰单元格属性
<3>支持字体,数字,日期操作
(3)JXL与·POI共同点:
<1> 可以修饰单元格属性
<2>支持字体,数字,日期操作
3.JXL实现从数据库将数据导出到excel表格代码示例
public class JxlExcel {
public static void main(String[] args){
//创建Excel文件
String[] title={"姓名","课程","分数"};
File file=new File("E:/sheet.xls");
try{
file.createNewFile();
//创建工作簿
WritableWorkBook wb = wb.createWorkBook(file);
//创建sheet
WritableSheet sheet = wb.createSheet("表格一",20);
//创建行,设置列名
Lable lable = null;
for(int i=0;i<title.length;i++){
////第一个参数为列,第二个为行
lable = new Lable(i,0,title[i]);
sheet.addCell(lable);
}
Data data=new Data();
ResultSet rs=data.getString();
while(rs.next()) {
System.out.println(rs.getString(1));
label=new Label(0,rs.getRow(),rs.getString(1));
sheet.addCell(label);
label=new Label(1,rs.getRow(),rs.getString(2));
sheet.addCell(label);
label=new Label(2,rs.getRow(),rs.getString(3));
sheet.addCell(label);
}
wb.write();
wb.close();
}catch(Exception e){
e.printStackTrace();
}
}
}
4.在企业级实际应用开发中普遍使用POI
4.1:这里使用框架作为例子(spring+springmvc+hibernate),省略数据操作层!!
4.2:POI实现从数据库将数据导出到excel表格代码示例(这里省略数据库操作类)
public class POIExcel {
//导出的Excel保存路径,文件名,格式
private String filePath = “E:\\sheet.xlsx”;
//相当于引入数据库连接
@Resource
private UserDAO userDao;
@Override
public String ExportExcel() {
//获取数据库表数据
List<User> list = userDao.listAllUser();
/**
*开始将获取到的数据导入创建的Excel中
*/
//第一步创建workbook
Workbook wb = null;
//判断excel的两种格式xls,xlsx
if(filePathtoLowerCase().endsWith("xlsx")){
wb = new XSSFWorkbook();
}else if(filePathtoLowerCase().endsWith("xls")){
wb = new HSSFWorkbook();
}
//第二步创建表格
Sheet sheet = wb.createSheet("用户信息表");
//第三步创建标题行row:获取表头行,添加表头0行
Row headersRow = sheet.createRow(0);
String[] headers = {"用户编号","用户名","用户邮箱"};
for(int i=0;i<headers.length;i++){
// 第四步创建单元格,,设置首行style居中,字体,单元格大小等
CellStyle style = workbook.createCellStyle();
Cell cell = headersRow.createCell(i);**
/**
* RichTextString:用来格式化单元格中的内容
*/
RichTextString text = new XSSFRichTextString(headers[i]);
cell.setCellValue(text);
cell.setCellStyle(style);
}
// 遍历把从数据库中取得的数据写入excel单元格内
if(list!=null&&!list.isEmpty()){
for(User user:list){
// 每遍历一次,在末尾动态添加一行
Row rowData = sheet.createRow(sheet.getLastRowNum() + 1);
//动态添加数据
rowData.createCell(0).setCellValue(caseBase.getId());
rowData.createCell(1).setCellValue(caseBase.getName());
rowData.createCell(1).setCellValue(caseBase.getEmail());
}
}
try {
//创建一个文件
FileOutputStream fout = new FileOutputStream("E:\\case_base.xlsx");
workbook.write(fout);
fout.close();
} catch (IOException e) {
e.printStackTrace();
}
return filePath;
}
}