poi批量导入导出Excel(三、通过模板导出Excel并能实现导入多个sheet表)

本项目基于SSM框架,简单封装了Excel批量导入导出功能,不用建数据库表一键导入导出Excel,不过这样只适用于对导入的Excel表进行转换,通过模板导出Excel并且能实现导入多个sheet表。上一篇介绍了建表导入导出Excel(点击跳转
一、下载poi jar包:
    点这里下载:poi 3.8/3.9/3.10三个版本下载
                         poi 3.17最新版本下载
二、基本操作步骤:   
首先,理解一下一个Excel的文件的组织形式,一个Excel文件对应于一个workbook(HSSFWorkbook),一个workbook可以有多个sheet(页/表)(HSSFSheet)组成,一个sheet是由多个row(行)(HSSFRow)组成,一个row是由多个cell(单元格)(HSSFCell)组成。
1、用HSSFWorkbook打开或者创建“Excel文件对象”
2、用HSSFWorkbook对象返回或者创建Sheet对象
3、用Sheet对象返回行对象,用行对象得到Cell对象
4、对Cell对象读写。

然后需要先新建一个Excel文件,格式样式表头标题编辑好,放入到项目中,下面是我的路径。

WEB-INF/jsp/purchasing/orderExcel/Excel.xls

三、控制层Controller按照模板导出Excel

解决:MultipartFile文件或者图片上传一直为null问题

    /**
     * 导出销售订单数据
     * @param myFile
     * @param respon
     * @return
     * @throws IOException
     */
    @RequestMapping(value = "export", method=RequestMethod.POST)
    public ModelAndView exportFile(@RequestParam(value="file",required=false)MultipartFile myFile,HttpServletResponse response,HttpServletRequest request)throws IOException {
    	ModelAndView mv = this.getModelAndView();
    	try {
    		ImportExcelUtil util = new ImportExcelUtil();
    		InputStream input = null;
    		List<List<Object>> lists = null;
    		if (myFile.isEmpty()) {
    			logBefore(logger, "导入文件为空,请先添加Excel文件!");
    		} else {
    			String fileName = myFile.getOriginalFilename();
    			input = myFile.getInputStream();
    			//实现多sheet页批量导入Excel读取数据存入lists
    			lists = util.getBankListByExcel(input, fileName);
    			input.close();
    			//引入导出Excel路径
    			File fi = new File(request.getSession().getServletContext().getRealPath("/") + "WEB-INF/jsp/purchasing/orderExcel/Excel.xls");
    			POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream(fi));
    			//读取excel模板
    			HSSFWorkbook wb = new HSSFWorkbook(fs);
    			//读取了模板内所有sheet内容
    			HSSFSheet sheet = wb.getSheetAt(0);
    			//如果这行没有了,整个公式都不会有自动计算的效果的
    			sheet.setForceFormulaRecalculation(true);
    			// 循环将excel中的数据存入库
    			for (int i = 1; i < lists.size(); i++) {
    				List<Object> list = lists.get(i);
    				HSSFRow dataRow = sheet.createRow((int) i + 1);  
    				dataRow.createCell(0).setCellValue(util.getFormat(String.valueOf(list.get
  • 5
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值