首页 > 其他分享 >POI导出案例

POI导出案例

时间:2024-07-10 14:09:39浏览次数:15  
标签:wb 导出 exportFields cell 案例 POI new response String

	/**
	 * POI方式导出
	 * @param list 数据
	 * @param exportFields 绑定列数组,0: 表头,1: 数据key
	 * @param response
	 */
	public static void exportExcel(List list,String[] exportFields,HttpServletResponse response) {


		Workbook wb = new XSSFWorkbook();
		//设置单元格式
		Font font = wb.createFont();
		font.setColor(Font.COLOR_NORMAL);
		CellStyle cellStyle = wb.createCellStyle();
		cellStyle.setFont(font);
		Sheet sheet = wb.createSheet("测试数据");
		// 首行冻结
		sheet.createFreezePane( 0, 1, 0, 1 );

		String[]headers = exportFields[0].split(",");
		// 创建标题行
		Row titleRow = sheet.createRow(0);

		for (int i = 0; i < headers.length; i++) {
			Cell cell = titleRow.createCell(i);
			cell.setCellValue(headers[i]);
		}
		String[]keys = exportFields[1].split(",");
		for (int i = 0; i < list.size(); i++) {
			Row currentRow = sheet.createRow(i+1);
			// 获取当前行的数据
			Object o = list.get(i);
			for (int j = 0; j < keys.length; j++) {
				// 设置列宽
				// sheet.setColumnWidth(j, 4100);
				Cell cell = currentRow.createCell(j);
				cell.setCellStyle(cellStyle);
				//每个单元格的值目前做 String 处理
				// cell.setCellType(CellType.STRING);
				// cell.setCellValue(ReflectUtil.getFieldValue(o, keys[j]).toString());
				Object fieldValue = ReflectUtil.getFieldValue(o, keys[j]);
				if (ObjectUtil.isNotEmpty(fieldValue)){
					cell.setCellValue(fieldValue.toString());
				}

			}
		}
		// writeToExcel(response, wb, "导出数据列表");

		// 生成Excel文件
		try (FileOutputStream outputStream = new FileOutputStream("E:\\项目\\work\\宁波\\工作\\2024\\7\\导出\\data.xlsx")) {
			wb.write(outputStream);
			outputStream.flush();
		}catch (Exception e) {
			logger.error(e);
		}


	}

	public void writeToExcel(HttpServletResponse response, Workbook wb, String fileName) {
		OutputStream os = null;
		try {
			response.setContentType("application/vnd.ms-excel");
			response.setCharacterEncoding("UTF-8");
			response.setHeader("Access-Control-Expose-Headers", "Content-Disposition");
			response.setHeader("Content-Disposition", String.format("attachment; filename=%s", new String(URLEncoder.encode(fileName + ".xlsx" , "UTF-8")
					.getBytes("UTF-8"), "UTF-8")));
			os = response.getOutputStream();
			wb.write(os);
			os.flush();
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			if (os != null) {
				try {
					os.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
	}

	public static void main(String[] args) {
		List<RegulatorySettlementReport> items = new ArrayList<>();
		// 表头+数据key对应,利用反射赋值
		String[] exportFields = {
				"结单状态,监管结算单号,结算发起时间,入库日期,出库日期,在库状态,仓库,货主,客户方,入库重量,入库金额,出库重量,出库金额,采销差价,铝拓服务费率,铝拓服务收益,采购付款日期,销售回款日期,入库码单号,出库单号,入库批号,品名,牌号,规格,厂家,重量,数量单位,重量单位,货物编号",
				"goodsAlledName,regulatorySettlementNo,settlementLaunchDate,inWhsDate,outWhsDate,stockStatusName,whsName,goodsOwnerName,customerName,inWhsAmount,inWhsMoney,outAmount,invyOutMoney,purchaseSalesPriceDiff,serviceRateName,serviceRevenue,purchasePaymentDate,salesCollectionDate,inWhsMdNo,outWhsNo,inWhsLotNo,brandName,texture,specification,producingName,invyOutAmount,quantityUnitName,weightUnitName,packageNo"
		};
		RegulatorySettlementReport report1 = new RegulatorySettlementReport();
		report1.setGoodsAlledName("未结单");
		report1.setRegulatorySettlementNo("001");
		items.add(report1);

		RegulatorySettlementReport report2 = new RegulatorySettlementReport();
		report2.setGoodsAlledName("已结单");
		report2.setRegulatorySettlementNo("002");
		items.add(report2);

		exportExcel(items,exportFields,null);
	}
	

  

标签:wb,导出,exportFields,cell,案例,POI,new,response,String
From: https://www.cnblogs.com/yxgmagic/p/18293935

相关文章

  • 学习ArkTS遇到的的兼容与适配案例
    案例相册选择的API(如下)在Mate30上无法支持letphotoPicker=newpicker.PhotoViewPicker();photoPicker.select({}).then(()=>{});虽然在2024/06Mate30的系统已经可以更新到4.2版本但是仍旧无法使用此API,然而同是麒麟990芯片的P40是可以正常执行的官......
  • 案例分享:Qt modbusTcp调试工具(读写Byte、Int、DInt、Real、DReal)(当前v1.0.0)
    前言  西门子PLC、台达PLC、法兰克机床等等多年以前玩得比较多,有tcp/ip通讯也有modbus通讯,modbus又分为网络,485,232等。  医疗项目,焊接机器人项目,工控机床项目,数控项目,物联网项目用的挺多的,将关键的通信技术抽离出来,单独弄成工具。  最近调绞车,遇到了modbustcp,正好有设......
  • java导出PDF文件
    我们需要将生成的PDF文件直接导出到浏览器而不是保存到本地,需要对HttpServletResponse进行配置,将PDF写入到响应流中。以下是可以将PDF导出到浏览器进行下载:我们首先先编写PDF工具类:packagecom.scenic.util;importcom.itextpdf.text.*;importcom.itextpdf.text.pdf.*;im......
  • java类的加载顺序及复杂案例(阿里)
    一.无继承关系的情况下在Java中,类的初始化顺序涉及到多个方面,包括静态变量、静态初始化块、实例变量、实例初始化块(也称为构造器初始化块或初始化块)以及构造器的执行顺序。这里是一个详细的顺序说明:静态变量和静态初始化块:当类被加载到JVM时,类的静态成员(静态变量和静态初......
  • aop的几种动态代理以及简单案例(1)
    SpingAOP是通过动态代理模式实现的,具体有两种实现方式,一种是基于Java原生的动态代理,一种是基于cglib的动态代理。1.jdk动态代理1.1创建需要被代理的方法接口publicinterfaceTargetInteface{voidmethod1();voidmethod2();intmethod3(Integeri);}1.......
  • 在 PowerShell 中,你可以使用一些命令来管理打印机驱动的导入和导出操作。通过这些 Pow
    更高级的PowerShell自动化打印机迁移,可以考虑以下步骤和技术:自动化打印机迁移流程批量导出和导入打印机配置使用PowerShell脚本批量导出和导入多个打印机的配置。可以结合循环和数组来处理多个打印机。powershellCopyCode#批量导出打印机配置$printers=Get-Printe......
  • PointNet——源码调试(模型训练+可视化测试显示)
    因为项目涉及到3D点云项目,故学习下PointNet这个用来处理点云的神经网络论文的话,大致都看了下,网络结构有了一定的了解,本博文主要为了下载调试PointNet网络源码,训练和测试调通而已,不涉及后续的改进优化。我是在Anaconda下创建一个新的虚拟环境空间部署项目测试大概用到的就......
  • 第九期案例研讨班-第8-9组教学案例设计草稿
    基于旅游分析理论分析天津城市可持续发展策略教学目标知识目标:了解旅游分析理论及其在城市可持续发展中的应用。技能目标:掌握数据分析工具,学会运用旅游分析理论分析天津城市的可持续发展策略。态度目标:培养学生的团队合作精神和创新思维能力。教学对象本教学案例适用于本......
  • 【20240709】海量图片导出需求,shell脚本
     [root@localhostimages]#catjunshuv3.sh#!/bin/bash#确保脚本在~/images目录下运行if["$(pwd)"!="$HOME/images"];thencd~/imagesfi#创建目标目录junshu,如果不存在则创建mkdir-pjunshu#获取CSV文件中的总行数,用于进度条total_lines=$(wc-l......
  • Spring Boot 微服务故障排除 – 真实案例研究
    之前碰到的一个真实案例,记录一下先来看看左移监控:优化云应用程序的途径,以及如何使用可观察性工具对SpringBoot代码问题进行左移故障排除,从而避免生产问题、不必要的成本并提高产品质量。通俗解释传统方法vs左移监控:传统方法:通常在开发接近尾声时,才开始进行严格的测......