在生活中或者工作中我们避免不了用Excel工具,所以们要进行对Excel文件的读和写就是解析和输出,所以所以我们用什么工具对Excel进行解析,我就简单的介绍一下,Apache POI, JXL,Alibaba EesyExcel等等,但是我们一般使用Apache POI,它是Java编写的免费开源的平台;他提供的对不同文件的解析功能,一般我们会用到 HSSF他是老版本的Excel只能存储65535行数据,XSSF是新版本的一般我们用这个。
解析Excel文件我们大概的从四个方面进行解说Workbook(Excel文件) Sheet(工作薄) Row(行) Cell(单元格),所以一般我们学习解析还是创建Excel文件时候按照这四部一部一部递进进行的;
Workbook:首先它是一个接口,用于解析或者(创建)Excel文件常见的实现类就是XSSF
常见的方法;
FileInputStream fis = new FileInputStream("c:\test\1627356554991.xlsx");
Workbook workbook = new XSSFWorkbook(fis);(解析一个Excel文件)
FileOutputStream out = new FileOutputStream("c:\test\1627356554991.xlsx");
Workbook workbook = new XSSFWorkbook(out);(创建一个Excel文件)
Sheet;它也是一个接口代表的是一个工作薄,是通过Workbook来获取或者是创建的
常见的方法;
Sheet sheet1 = workbook.createSheet();(按照默认名称创建工作簿)
Sheet sheet2 = workbook.createSheet("自定义工作簿2");(// 按照自定义名称创建工作簿)
Sheet sheet01 = workbook.getSheetAt(0);(// 按照工作簿下标获取Sheet)
Sheet sheet02 = workbook.getSheet("Sheet0");(// 按照工作簿名称获取Sheet)
int n = workbook.getNumberOfSheets();(获取工作的数量)
Row; 它也是一个接口,代表是每个工作薄的行,是通过sheet得到的
常见方法
Row row = sheet.createRow(0);(创建数据行)
Row row = sheet.getRow(0);(根据下表获取指定的数据的行)
int first = sheet.getFirstRowNum();(获取首行下标)
int last = sheet.getLastRowNum();(获取尾行下标)
Cell:它是一个接口,代表的行的里的单元格,它是通过Row获取的
常见方法
Cell cell0 = row.createCell(0);(创建单元格)
cell0.setCellValue(UUID.randomUUID().toString());(在单元格里写东西)
Cell cell = row.getCell(1);(根据下标拿到对应单元格)
CellType type = cell.getCellType();(获取单元格类型,有可能是数字或者是字符串)
如果设置日期的话
DataFormat dataFormat = workbook.createDataFormat();
Short formatCode = dataFormat.getFormat("yyyy-MM-dd HH:mm:ss");(在这里设置日期的格式)
CellStyle cellStyle = workbook.createCellStyle();
cellStyle.setDataFormat(formatCode);
设置当前时间
Cell cell1 = row.createCell(1);
cell1.setCellStyle(cellStyle); // 设置单元格样式
cell1.setCellValue(new Date()); // 保存当前日期时间至本单元格
创建单元格样式
CellStyle cellStyle = workbook.createCellStyle();
设置单元格的水平对齐类型。 此时水平居中
cellStyle.setAlignment(HorizontalAlignment.CENTER);
设置单元格的垂直对齐类型。 此时垂直靠底边
cellStyle.setVerticalAlignment(VerticalAlignment.BOTTOM);
这就是简单创建获取一般的Excel文件但是当我们遇见大型的Excel文件呢我没有一个Workbook的实现类SXSSWorkbook,可以通过传入参数来控制一次性把多少字节写入内存,这样就不存在创建大数量的Excel文件的问题了下面是这个实现类的代码;
但是这样只能创建不能获取,那么我们怎么才能获取呢?这时候我们用到另一个EasyExcel工具
EasyExcel;是阿里巴巴一个基于java的简单,省内存的读写的开源项目
EasyExcel的写入;一般需要创建一个实现类,然后根据这个实现类进行读和写
大数量的读取Excel文件:
大数量的写Excel文件
版权归原作者 小张要秃头 所有, 如有侵权,请联系我们删除。