将文件以Csv格式导出

一、获取分页查询结果

@GetMapping("/exportAuditLog")
	@PreAuthorize("hasRole('HIT_FINANCE')")
	public void export(AuditEventLogSearchRequest auditrequest, @OTPCodeInfo OneTimeCode oneTimeCode,
			SessionStatus status, HttpServletResponse response) throws Exception {
		Assert.notNull(oneTimeCode, "one time code can't empty or null");
		oneTimeCode.validationOtpCode();
		int curPage = auditrequest.getCurPage();
		int pageSize = auditrequest.getPageSize();
		String principal = auditrequest.getPrincipal();
		String timemin = auditrequest.getTimemin();
		String timemax = auditrequest.getTimemax();
		String type = auditrequest.getType();
		// params
		Map<String, String> params = new HashMap<>();
		params.put("principal", principal);
		params.put("timemin", timemin);
		params.put("timemax", timemax);
		params.put("type", type);
		// page
		BasePage page = new BasePage();
		page.setCurPage(curPage);
		page.setPageSize(pageSize);
		// add sort
		List<Sort.Order> orderList = new ArrayList<>();
		if (auditrequest.getCompositors() != null && auditrequest.getCompositors().size() != 0) {
			for (Compositor compositor : auditrequest.getCompositors()) {
				Sort.Order orders = new Sort.Order(compositor.getDirection(), compositor.getProperty());
				orderList.add(orders);
			}
		}
		else {
			Sort.Order order = Sort.Order.desc("timeStamp");
			orderList.add(order);
		}
		Pageable pageable = PageRequest.of(curPage, pageSize, Sort.by(orderList));
		// get audit content
		Page<Audit> auditContent = auditTrailLogService.searchAuditTrailLog(params, pageable);
		List<Audit> auditlogcontent = auditContent.getContent();

二、设置CSV 文件格式

String filename = "Auditlogload.csv";

		HttpHeaders headers = new HttpHeaders();
		// 下载显示的文件名,解决中文名称乱码问
		String downloadFielName = new String(filename.getBytes("UTF-8"), "UTF-8");
		// 通知浏览器以attachment(下载方式)打开图片
		headers.setContentDispositionFormData("attachment", downloadFielName);
		// application/octet-stream 二进制流数据(最常见的文件下载)
		headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
		String utf = "UTF-8";
		response.setContentType("application/ms-excel.numberformat:@");
		response.setCharacterEncoding(utf);
		response.setHeader("Pragma", "public");
		response.setHeader("Cache-Control", "max-age=30");
		response.setHeader("Content-Disposition", "attachment; filename=" + downloadFielName);

		process(auditlogcontent, response);
public void process(List<Audit> datalist, HttpServletResponse response) throws IOException {
		OutputStream output = response.getOutputStream();
		CsvWriter csvWriter = new CsvWriter(output, ',', Charset.forName("UTF-8"));
		String[] tableheader = { "Date Time", "User Name", "Event", "Log Details" };
		csvWriter.writeRecord(tableheader);
		for (Audit data : datalist) {
			String[] arr = new String[4];
			arr[0] = data.getTimeStamp();
			arr[1] = data.getPrincipal();
			arr[2] = data.getType();
			arr[3] = data.getData();
			csvWriter.writeRecord(arr);
		}
		csvWriter.close();
		output.close();
	}

注:所用API

compile group: 'net.sourceforge.javacsv', name: 'javacsv', version: '2.0'

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
单片机是一种小型的计算机芯片,通常不具备完整的文件系统功能。然而,我们可以使用单片机来生成和存储简单的.csv文件。 首先,我们需要选择适合单片机的储存器件,例如SD卡或者EEPROM。这些储存器件可以作为外部存储介质,用于保存数据。 接下来,我们需要确定.csv文件的结构。.csv文件是一种以逗号分隔的文本文件,其中每行表示一个数据记录,每个记录的字段之间用逗号分隔。我们需要按照.csv文件的结构,将需要保存的数据进行格式化,然后按照逗号分隔的方式写入储存器件。 在写入数据之前,我们需要首先初始化储存器件。这可以通过单片机的相应接口和功能库来实现。初始化过程可能包括格式化储存器件、创建.csv文件的头部信息等。 接下来,我们需要编写单片机的程序,将需要保存的数据格式化,并按照逗号分隔的方式写入储存器件。这可以通过单片机的编程语言和相应的功能库来实现。 写入数据完成后,我们还可以提供相应的读取功能,通过单片机从储存器件中读取.csv文件的内容。这可以通过解析文本文件的方式来实现,将每行数据按照逗号分隔的方式进行解析,并将解析后的数据发送到单片机的其他模块或者外部设备进行进一步处理。 总结来说,单片机可以通过外部储存器件来生成和保存.csv文件。这需要首先选择适合的储存器件,然后按照.csv文件的结构将数据格式化写入,最后通过解析文本文件的方式读取.csv文件的内容。这样,单片机就可以实现简单的文件系统功能,生成和处理.csv文件

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值