整理一下当年的学习笔记之:poi导入导出

poi导入导出


很全的工具类满足日常开发需要下载地址


或许只有我知道我写的是什么
导出的例子----------------------------------
    public void daochu() throws Exception{

		// 调用封装类执行导出

		// 导出文件存放的路径,并且是虚拟目录指向的路径
		String filePath = Tools.getValue("poi_url");
		// 导出文件的前缀
		String filePrefix = "xztc";
		// -1表示关闭自动刷新,手动控制写磁盘的时机,其它数据表示多少数据在内存保存,超过的则写入磁盘
		int flushRows = 100;

		// 定义导出数据的title
		List<String> fieldNames = new ArrayList<String>();
		fieldNames.add("学号");
		fieldNames.add("姓名");
		fieldNames.add("性别");
		fieldNames.add("班级");
		fieldNames.add("电话");
		fieldNames.add("岗位");

		// 告诉导出类数据list中对象的属性,让ExcelExportSXXSSF通过反射获取对象的值
		List<String> fieldCodes = new ArrayList<String>();
		fieldCodes.add("loginName");
		fieldCodes.add("name");
		fieldCodes.add("xingbie");
		fieldCodes.add("banji");
		fieldCodes.add("phone");
		fieldCodes.add("yxJob");

		// 开始导出,执行一些workbook及sheet等对象的初始创建
		ExcelExportSXXSSF excelExportSXXSSF = ExcelExportSXXSSF.start(filePath,
				filePath, filePrefix, fieldNames, fieldCodes, flushRows);
		// 导出的数据通过service取出
		List<Approval> list = approvalService.daochu("推荐");
		// 执行导出
		excelExportSXXSSF.writeDatasByObject(list);
		// 输出文件,返回下载文件的http地址,已经包括虚拟目录
		String webpath = excelExportSXXSSF.exportFile();

		System.out.println(webpath);
		
		//使下载名字不乱码
		String framename = new String("岗位信息表.xlsx".getBytes("gbk"),"iso-8859-1");


		//通过文件获取MIME类型
		String contentType =ServletActionContext.getRequest().getServletContext().getMimeType(webpath);
		String contentDisposition = "attachment;filename=" + framename;
		FileInputStream input = new FileInputStream(webpath);
		HttpServletResponse response = ServletActionContext.getResponse();
		response.setHeader("Content-Type", contentType);
		response.setHeader("Content-Disposition", contentDisposition);
		ServletOutputStream output = response.getOutputStream();
		IOUtils.copy(input, output);
		input.close();
		
    }


--------------导入


service层代码:
public class YpxxImportServiceImpl implements HxlsOptRowsInterface {
	
	@Autowired
	private YpxxMapper ypxxMapper;

	@Override
	public String optRows(int sheetIndex, int curRow, List<String> rowlist)
			throws Exception {
		try {
			//得到导入的数据
			//rowlist数据 是一行数据,按照模版解析
			String mc = rowlist.get(0);//通用名
			String jx = rowlist.get(1);//剂型
			String gg = rowlist.get(2);//规格 
			String zhxs = rowlist.get(3);//转换系数
			String zbjg = rowlist.get(4);//中标价格
			String scqymc = rowlist.get(5);//生产企业
			String spmc = rowlist.get(6);//商品名
			String jyzt = rowlist.get(7);//交易状态
			
			//进行校验
			//校验中标价格合法性
			//校验交易状态的合法性
			if(jyzt == null || (!jyzt.equals("1") && !jyzt.equals("2"))){
				return "交易状态输入值不对,请输入1:正常,2:暂停";
			}
			
			//添加唯一校验
			//校验通用名、剂型、规格、转换系数、生产企业、商品名
			//思路:根据通用名、剂型、规格、转换系数、生产企业、商品名,查询,如果查询到记录,说明 存在重复记录
			//.....
			
			Ypxx ypxx = new Ypxx();
			ypxx.setId(UUIDBuild.getUUID());
			ypxx.setMc(mc);
			ypxx.setJx(jx);
			ypxx.setGg(gg);
			ypxx.setZhxs(zhxs);
			ypxx.setScqymc(scqymc);
			ypxx.setSpmc(spmc);
			ypxx.setZbjg(Float.parseFloat(zbjg));
			ypxx.setJyzt(jyzt);
			
			
			//校验调用mapper
			ypxxMapper.insert(ypxx);
		} catch (Exception e) {
			e.printStackTrace();
			return "导入失败!";
		}
		
		
		return "success";
	}

}

action:
	
	//药品导入提交
	@RequestMapping("/importypxxsubmit")
	public @ResponseBody SubmitResultInfo importypxxsubmit(
			//写上传的文件
			MultipartFile ypxximportfile
			)throws Exception{
		
		//将上传的文件写到磁盘
		String originalFilename  = ypxximportfile.getOriginalFilename();
		//写入磁盘的文件
		File file = new File("D:/upload/linshi/"+UUIDBuild.getUUID()+originalFilename.substring(originalFilename.lastIndexOf(".")));
		if(!file.exists()){
			//如果文件目录 不存在则创建
			file.mkdirs();
		}
		
		//将内存中的文件写磁盘
		ypxximportfile.transferTo(file);
		//上传文件磁盘上路径 
		String absolutePath = file.getAbsolutePath();
		
		
		//调用工具类进行药品目录 导入
		HxlsRead xls2csv = null;
		try {
			//第一个参数就是导入的文件
			//第二个参数就是导入文件中哪个sheet
			//第三个参数导入接口的实现类对象
			xls2csv = new HxlsRead(absolutePath,1,ypxxImportService);
			xls2csv.process();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		
		//提示导入成功条数
		long success_num = xls2csv.getOptRows_success();
		//导入失败数量
		long failure_num = xls2csv.getOptRows_failure();
		
		//对导入失败记录处理
		//获取导入失败记录
		//xls2csv.getFailrows()
		//获取导入记录的title
		//xls2csv.getRowtitle();
		//获取导入失败原因
		//xls2csv.getFailmsgs()
		
		//将上边获取到的失败记录、title、失败原因,导出成一个 excel
		//使用工具类进行导出,得到导出文件下载路径
		//......
		
		
		return ResultUtil.createSubmitResult(ResultUtil.createSuccess(Config.MESSAGE, 314, new Object[]{
				success_num,failure_num
		}));
	}













  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值