java功能实现 -- Excel导入导出(简版)

需求

项目中有数据导出为表格的需求,且字段较少,业务处理简单,可使用下面方式进行导出。若需要适应性更广可参考通用导入导出

思路

1.请求数据库,获取需要导出的所有数据;
2.创建表格写入类,进行每行的写入;
3.设置每列单元格宽度后响应即可。

步骤

API接口代码

    @ApiOperation(value = "导出excel表", notes = "导出excel表")
	@RequestMapping(value = "/excelTest", method = RequestMethod.GET)
	@JsonView(ModelDto.ListView.class)
	public Object excelTest(@ModelAttribute @Validated({ ModelDto.ListValidated.class }) ModelDto modelDto) {
		Response response = modelService.excel(modelDto);
		if (200 == response.getStatus()) {
			List<ModelEntity> modelDtos = (List<ModelEntity>) response.getData();
			ArrayList<Map<String, Object>> rows = new ArrayList<Map<String, Object>>();
			for (int i = 0; i < modelDtos.size(); i++) {
				Map<String, Object> row1 = new LinkedHashMap<>();
				ModelEntity ModelEntity = (ModelEntity) JSONObject.toBean(
						JSONObject.fromObject(modelDtos.get(i)), ModelEntity.class);
				row1.put("序号", i + 1);
				row1.put("编码", modelEntity.getCode());
				row1.put("名称", modelEntity.getName());
				if (("0").equals(modelEntity.getIs_implement_estate_management().toString())) {
					row1.put("是否实行物业管理", "是");
				} else {
					row1.put("是否实行物业管理", "否");
				}
				rows.add(row1);
			}
			String date = DateUtil.format(new Date(), "yyyy-MM-dd");
			String path = filePath + System.getProperty("file.separator") + date;
			File fileDirs = new File(path);
			if (!fileDirs.exists()) {
				fileDirs.mkdirs();
			}
			String fileName = Uuid.getOrderNo() + ".xlsx";
			path += System.getProperty("file.separator") + fileName;
			// 通过工具类创建writer
			ExcelWriter writer = ExcelUtil.getWriter(path);
			// 合并单元格后的标题行,使用默认标题样式
			if (rows.size() > 0) {
				writer.merge(rows.get(0).size() - 1, user.getName() + year + "数据列表");
			}
			// 一次性写出内容,使用默认样式
			writer.write(rows);
			Workbook workbook = writer.getWorkbook();
			Sheet sheet = workbook.getSheetAt(0);
			for (int i = 0; i < rows.size() + 2; i++) {
				sheet.autoSizeColumn(i);
			}
			// 控制生成的单元格宽度
			sheet.setColumnWidth(0, 1500);
			sheet.setColumnWidth(1, 4000);
			sheet.setColumnWidth(2, 4000);
			sheet.setColumnWidth(3, 4000);
			// 关闭writer,释放内存
			writer.close();
			String url = fileUrl + System.getProperty("file.separator") + date + System.getProperty("file.separator") + fileName;
			System.out.println(url);
			response.setData(url);
			return response;
		} else {
			response = new Response(1, "数据查询出错!");
		}
		return response;
	}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值