POI批量导出

主要分为两种:普通导出和按模板导出。

基本步骤:1、将数据放入workbook中

    2、利用参数 workbook和导出后文件名,导出文件

两者区别在于第1步,列名是如何放入workbook的,普通导入是将列名放入数组,再将数组放入workbook;按模板导入则是通过输入流读取xls文件获得。

一、普通导出

控制层:

	public String export()throws Exception{
		Connection con=null;
		try {
			con=dbUtil.getCon();
			Workbook wb=new HSSFWorkbook();//创建workbook
			String headers[]={"编号","姓名","电话","Email","QQ"};//头部(列名)
			ResultSet rs=userDao.userList(con, null);//数据
			ExcelUtil.fillExcelData(rs, wb, headers);
			ResponseUtil.export(ServletActionContext.getResponse(), wb, "导出excel.xls");
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{
			try {
				dbUtil.closeCon(con);
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		return null;
	}

数据和列名放入workbook中

	public static void fillExcelData(ResultSet rs,Workbook wb,String[] headers)throws Exception{
		int rowIndex=0;
		Sheet sheet=wb.createSheet();
		Row row=sheet.createRow(rowIndex++);
		for(int i=0;i<headers.length;i++){//将列名放入表格
			row.createCell(i).setCellValue(headers[i]);
		}
		while(rs.next()){//将数据存入表格
			row=sheet.createRow(rowIndex++);
			for(int i=0;i<headers.length;i++){
				row.createCell(i).setCellValue(rs.getObject(i+1).toString());
			}
		}
	}

导出文件:需要workBook和导出后的文件名

public static void export(HttpServletResponse response,Workbook wb,String fileName)throws Exception{
		response.setHeader("Content-Disposition", "attachment;filename="+new String(fileName.getBytes("utf-8"),"iso8859-1"));
		response.setContentType("application/ynd.ms-excel;charset=UTF-8");
		OutputStream out=response.getOutputStream();
		wb.write(out);
		out.flush();
		out.close();
	}

二、按模板导入

控制层:

	public String export2()throws Exception{
		Connection con=null;
		try {
			con=dbUtil.getCon();
			ResultSet rs=userDao.userList(con, null);//获取数据
			//将数据通过模板放入workbook中,返回workbook
			Workbook wb=ExcelUtil.fillExcelDataWithTemplate(userDao.userList(con, null), "userExporTemplate.xls");
			ResponseUtil.export(ServletActionContext.getResponse(), wb, "利用模版导出excel.xls");//导出方法
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{
			try {
				dbUtil.closeCon(con);
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		return null;
	}

利用模板将数据放入workbook

	public static Workbook fillExcelDataWithTemplate(ResultSet rs,String templateFileName)throws Exception{
		//读取模板
		InputStream inp=ExcelUtil.class.getResourceAsStream("/com/java1234/template/"+templateFileName);
		POIFSFileSystem fs=new POIFSFileSystem(inp);
		Workbook wb=new HSSFWorkbook(fs);
		Sheet sheet=wb.getSheetAt(0);
		// 获取列数
		int cellNums=sheet.getRow(0).getLastCellNum();
		int rowIndex=1;
		//放入数据
		while(rs.next()){
			Row row=sheet.createRow(rowIndex++);
			for(int i=0;i<cellNums;i++){
				row.createCell(i).setCellValue(rs.getObject(i+1).toString());
			}
		}
		return wb;
	}
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用poi实现批量导入,你可以按照以下步骤进行操作: 1. 在前端页面中添加一个文件上传的表单,可以使用HTML的<input type="file">标签。\[1\] 2. 在后端的控制器中添加一个处理文件上传的接口,使用@RequestParam注解获取上传的文件。然后使用poi库解析Excel文件,将数据保存到数据库中。\[1\] 3. 在Excel文件中,每一行代表一个数据记录,每一列代表一个字段。你可以根据需要定义Excel文件的格式,例如第一行可以是字段名,从第二行开始是数据记录。\[3\] 4. 使用poi库的API读取Excel文件中的数据,并将数据保存到数据库中。你可以使用poi的HSSFWorkbook或XSSFWorkbook类来读取Excel文件,然后使用Sheet类和Row类来遍历每一行和每一列的数据。\[3\] 5. 将读取到的数据保存到数据库中,可以使用数据库操作的相关API,例如使用JDBC或者使用ORM框架如MyBatis进行数据库操作。\[3\] 通过以上步骤,你就可以使用poi实现批量导入功能了。你可以根据具体的需求进行相应的调整和扩展。 #### 引用[.reference_title] - *1* *2* *3* [SpringBoot项目+Echart数据展示+poi 实现批量导入导出](https://blog.csdn.net/m0_60459789/article/details/128100521)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值