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

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;
	}
    }