EXCEL写入:使用poi输出excel文件

1.简介

通过前面的读取,可以知道Workbook中有多个Sheet一个Sheet中有多个Row一个Row中具有多个Cell,所以写入的时候应该是先创建Shee然后创建多个个Row,然后再Row中创建多个Cell,最后写入数到Cell中

2.创建通用的excel写入器

	public void writeDateToExcel(List<Object[]> datas, ExcelType excelType, File destFile) throws Exception {
		Workbook workbook = MyExcelUtils.createWorkBook(excelType);
		Sheet sheet = workbook.createSheet("default-sheet");
		for (int i = 0; datas != null && i < datas.size(); i++) {
			Object[] objs = datas.get(i);
			Row row = sheet.createRow(i);
			for (int j = 0; objs != null && j < objs.length; j++) {
				Object value = objs[j];
				Cell cell = row.createCell(j);
				MyExcelUtils.writeCellValue(cell, value);
			}
		}
		MyExcelUtils.writeWorkBook(workbook, destFile);
	}

这就是一个正向的读取操作,也就是一个写入操作,可以看出写入和读入基本生完全一致,还有就是要注意类型转换的问题,其中的一个MyExcelUtils就是一个简单的类型判断写入,还有一个写出操作这里就不显示了

3.准备数据开始写

	public static void main(String[] args) {
		ExcelWriteTest excelWriteTest = new ExcelWriteTest();
		excelWriteTest.testWrite();
	}

	public void testWrite() {
		URL url = Thread.currentThread().getContextClassLoader().getResource("");
		File destFile = new File(url.getPath() + "/newTest.xlsx");
		try {
			writeDateToExcel(getData(), ExcelType.XLSX, destFile);
			System.out.println("输出文件成功,文件地址在:" + destFile.getAbsolutePath());
		} catch (Exception e) {
			e.printStackTrace();
			System.out.println("创建excel文件失败");
		}

	}

	public List<Object[]> getData() {
		Object[] title = { "username", "age", "onwork", "isleaf" };
		Object[] data1 = { "admin", 18, true, "yes" };
		Object[] data2 = { "guest", 20, false, "no" };
		Object[] data3 = { "user", 22, true, "yes" };
		List<Object[]> datas = new ArrayList<Object[]>();
		datas.add(title);
		datas.add(data1);
		datas.add(data2);
		datas.add(data3);
		return datas;
	}

4.执行后的结果

在这里插入图片描述
修改类型为xls输出的结果
在这里插入图片描述

最后生成的文件为:
在这里插入图片描述

5.总结

1.写入excel操作和读取操作基本上完全一致就是最后使用的是write方法

2.基本上excel的写入是比较容易理解的

以上纯属个人见解,如有问题请联系本人!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值