Excel文件解析(EasyExcel框架解析)

使用EasyExcel文件解析

准备工作:

导入相关alibabaeasyexcel相关jar包:

准备Data实体类:

import java.util.Date;

import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;


public class Data {
	@ExcelProperty("订单号")
	private String orderId;
	@ExcelProperty("用户id")
	private String uuid;
//	@ExcelIgnore
	@ExcelProperty("下单时间")
	private Date date;

	public Data(String orderId, String uuid, Date date) {
		super();
		this.orderId = orderId;
		this.uuid = uuid;
		this.date = date;
	}

	public Data() {
		super();
	}

	public String getOrderId() {
		return orderId;
	}

	public void setOrderId(String orderId) {
		this.orderId = orderId;
	}

	public String getUuid() {
		return uuid;
	}

	public void setUuid(String uuid) {
		this.uuid = uuid;
	}

	public Date getDate() {
		return date;
	}

	public void setDate(Date date) {
		this.date = date;
	}

	@Override
	public String toString() {
		return "Data [orderId=" + orderId + ", uuid=" + uuid + ", date=" + date + "]";
	}

}

测试类:

import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.UUID;

import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import com.alibaba.excel.metadata.CellData;

public class Alibabaeasyexcel {
	public static void main(String[] args) {
		write();
		read();
	}

	private static void write() {
		// 使用EasyExcel写出操作
		// EasyExcel.write(写出的位置,格式类型)
		// .sheet("表名")
		// .doWrite(list)--写出数据方式
		List<Data> list = new ArrayList<Data>();
		for (int i = 0; i <= 1000000; i++) {
			Data data = new Data();
			data.setUuid(UUID.randomUUID().toString().substring(0, 6));
			data.setOrderId(i + "");
			data.setDate(new Date());
			list.add(data);
		}
		EasyExcel.write("E:\\apesourcefile\\homework\\alibababig.xlsx", Data.class).sheet("表1").doWrite(list);
		System.out.println("写出数据结束");
	}

	private static void read() {
		// EasyExcle读取文件信息
		// 参数1:文件路径
		// 参数2:格式类型
		// 参数3:读取到文件做的操作或者逻辑----监听器,判断
		// EasyExcel.read(file,head,参数3)
		// 读取表
		// .sheet()
		// 执行读的操作
		// .doRead();
		EasyExcel.read("E:\\apesourcefile\\homework\\alibababig.xlsx", Data.class, new AnalysisEventListener<Data>() {
			// 读取完所有操作后做的事情
			@Override
			public void doAfterAllAnalysed(AnalysisContext arg0) {
				System.out.println("读取结束");
			}

			// invoke方法读取到的数据要做的操作逻辑
			@Override
			public void invoke(Data arg0, AnalysisContext arg1) {
				System.out.println(arg0);
			}

			@Override
			public void invokeHead(Map<Integer, CellData> headMap, AnalysisContext context) {
				System.out.println(headMap);
			}
		}).sheet().doRead();
	}
}

运行结果:

 先写再读取,使得excel先被写入数据,然后在控制台输出读取的结果:

 

 

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
EasyExcel是一款基于Java的Excel读写框架,可以方便地对Excel文件进行读写操作。但是,EasyExcel并不支持解析Excel中的图片。要解析Excel中的图片,可以使用Apache POI框架。 Apache POI是一个Java API,可以用于处理Microsoft Office格式的文档,包括Excel、Word和PowerPoint。以下是使用Apache POI解析Excel中图片的简单步骤: 1. 获取Workbook对象 使用POIFSFileSystem或XSSFWorkbook类读取Excel文件,并获取Workbook对象。 ``` POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream("test.xls")); HSSFWorkbook wb = new HSSFWorkbook(fs); ``` 2. 获取Sheet对象 使用Workbook对象获取Sheet对象。 ``` HSSFSheet sheet = wb.getSheetAt(0); ``` 3. 获取DrawingPatriarch对象 使用Sheet对象获取DrawingPatriarch对象。 ``` HSSFPatriarch patriarch = sheet.createDrawingPatriarch(); ``` 4. 遍历所有的Drawing对象 使用DrawingPatriarch对象的getChildren()方法获取所有的Drawing对象,并遍历每个Drawing对象。 ``` List<HSSFShape> shapes = patriarch.getChildren(); for(HSSFShape shape : shapes) { if(shape instanceof HSSFPicture) { // 处理图片 } } ``` 5. 处理图片 对于每个HSSFPicture对象,可以通过getPictureData()方法获取图片的字节数组,然后将其保存到本地文件。 ``` HSSFPicture pic = (HSSFPicture) shape; int pictureIndex = pic.getPictureIndex(); HSSFPictureData picData = wb.getAllPictures().get(pictureIndex); byte[] data = picData.getData(); // 将data保存到本地文件 ``` 以上就是使用Apache POI解析Excel中图片的简单步骤。需要注意的是,这种方法只能解析Excel中插入的图片,不能解析复制粘贴的图片。如果需要解析复制粘贴的图片,可以使用第三方库JExcelApi。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值