以Excel文件形式导出

/**
	 * @param request
	 * @param response
	 * @param map
	 * @return
	 * @throws IOException
	 */
	public static String newExportXls(HttpServletRequest request, HttpServletResponse response,
			Map<String, Object> map) {
		try {
			logger.error("开始导出excel...");
			// 文件名
			String excelName = map.get("excelName").toString();
			// sheet页的名字
			String sheetName = map.get("sheetName").toString();
			// 属性栏
			ArrayList<String> totleList = (ArrayList<String>) map.get("totleList");
			// 所有数据
			ArrayList<ArrayList<String>> dataList = (ArrayList<ArrayList<String>>) map.get("dataList");
			// 将list集合中的数据写到一个Excel文件中
			HSSFWorkbook workbook = new HSSFWorkbook();// 创建一个Excel文件,当前这个文件在内存中
			HSSFCellStyle style = workbook.createCellStyle();

			HSSFFont font = workbook.createFont();
			font.setFontHeightInPoints((short) 25);// 设置字体大小

			HSSFSheet sheet = workbook.createSheet(sheetName);// 创建一个sheet页
			HSSFRow headRow = sheet.createRow(0);// 创建标题行
			// sheet.autoSizeColumn(i); // 设置列宽
			style.setFont(font);

			for (int i = 0; i < totleList.size(); i++) {
				headRow.createCell(i).setCellValue(totleList.get(i));// 设置标题行的每个属性
				sheet.setColumnWidth(i, 20 * 256); // 设置列宽
			}
			HSSFCellStyle contextstyle = workbook.createCellStyle();
			for (int i = 0; i < dataList.size(); i++) {
				HSSFRow dataRow = sheet.createRow(sheet.getLastRowNum() + 1);
				int rowIndex = i + 1;
				HSSFRow contentRow = sheet.createRow(rowIndex);

				ArrayList<String> arrayList = dataList.get(i);

				for (int j = 0; j < arrayList.size(); j++) {
					// dataRow.createCell(j).setCellValue(arrayList.get(j));
					HSSFCell contentCell = contentRow.createCell(j);
					Boolean isInteger = false;// arrayList.get(j)是否为整数
					// arrayList.get(j)(小数部分是否为0)
					HSSFDataFormat df = workbook.createDataFormat(); // 此处设置数据格式
					if (arrayList.get(j) == null || "".equals(arrayList.get(j))) {
						contentCell.setCellStyle(contextstyle);
						// 设置单元格内容为字符型
						contentCell.setCellValue(arrayList.get(j));
					} else {
						if (NumberUtils.isNumber(arrayList.get(j))) {
							//判断字符串中是否全为数字
							if(NumberUtils.isDigits(arrayList.get(j))){
								contentCell.setCellStyle(contextstyle);
								// 设置单元格内容为字符型
								contentCell.setCellValue(arrayList.get(j));
							}else{
								//小数
								contextstyle.setDataFormat(df.getBuiltinFormat("#,##0.00"));
								contentCell.setCellStyle(contextstyle);
								// 设置单元格内容为字符型
								contentCell.setCellValue(Double.parseDouble(arrayList.get(j)));
							}
						} else {
							contentCell.setCellStyle(contextstyle);
							// 设置单元格内容为字符型
							contentCell.setCellValue(arrayList.get(j));
						}
					}
				}

			}
			// 文件下载:一个流(输出流)、两个头
			ServletOutputStream out = response.getOutputStream();

			String filename = excelName + ".xls";
			filename = encodeDownloadFilename(filename, request.getHeader("user-agent"));
			// String mimeType =
			// request.getSession().getServletContext().getMimeType(filename);
			// response.setContentType(mimeType);
			response.setContentType("text/html;charset=utf-8");
			response.setHeader("content-disposition", "attachment;filename=" + filename);
			workbook.write(out);
			out.close();
			logger.info("导出excel完成.....");
		} catch (Exception e) {
			logger.error("导出excel失败,error=", e);
		}
		return null;
	}

/**
	 * @Description: TODO(测试方法随时可以删除)
	 * @param request
	 * @param response
	 * @param noSettleList
	 * @return
	 * @throws IOException
	 */
	public static String test(HttpServletRequest request, HttpServletResponse response,
			List<NoSettleInfoDTO> noSettleList) throws IOException {
		Map<String, Object> map = new HashMap<>();
		map.put("excelName", "商家列表");
		map.put("sheetName", "第一批商家");
		List<String> totleList = new ArrayList<>();
		totleList.add("渠道");
		totleList.add("门店");
		totleList.add("商家名称");
		totleList.add("订单号/退单号");
		totleList.add("支付流水号");
		totleList.add("支付方式");
		totleList.add("发生时间");
		totleList.add("订单金额");
		totleList.add("手续费");
		totleList.add("金额");
		totleList.add("对方");
		map.put("totleList", totleList);
		List<List<String>> dataList = new ArrayList<>();
		for (NoSettleInfoDTO noSettleInfo : noSettleList) {
			List<String> list = new ArrayList<>();
			list.add(noSettleInfo.getChannel());
			list.add(noSettleInfo.getMarketName());
			list.add(noSettleInfo.getSellerName());
			list.add(noSettleInfo.getTransactionNo());
			list.add(noSettleInfo.getTradeSerial());
			list.add(noSettleInfo.getPayway());
			list.add(noSettleInfo.getOrderTime());
			list.add(noSettleInfo.getOrderAmount());
			list.add(noSettleInfo.getPoundage());
			list.add(noSettleInfo.getAmount());
			list.add(noSettleInfo.getMobilephone());
			dataList.add(list);
		}
		map.put("dataList", dataList);
		newExportXls(request, response, map);
		return null;
	}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不会敲代码的阿明

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值