Java中的文件处理————Excel

处理excel文件需要用到的包ApachepPOLEasyExcel;

Apacheppol:

 HSSF - 提供读写Microsoft Excel格式档案的功能。

XSSF - 提供读写Microsoft Excel OOXML格式档案的功能。

HWPF - 提供读写Microsoft Word格式档案的功能。

HSLF - 提供读写Microsoft PowerPoint格式档案的功能。

HDGF - 提供读写Microsoft Visio格式档案的功能。

目前多彩用xssf;

需要导入的相关类包 。

Java中的文件处理————Excel_第1张图片

workbook;(Excel文件)

  1. 创建excel文件
    // 输出流
    FileOutputStream fos = new FileOutputStream("c:\\test\\temp.xlsx");
    
    // Excel文件对象
    Workbook workbook = new XSSFWorkbook();
    
    // 通过输出流进行写入
    workbook.write(fos);
    
    // 关闭资源
    fos.close();
    workbook.close();
  2. 加载excel文件
// 输入流
FileInputStream fis = new FileInputStream("c:\\test\\1627356554991.xlsx");

// Excel文件对象
Workbook workbook = new XSSFWorkbook(fis);

sheet:(电子版面)

  1. 创建单元格
    // 按照默认名称创建工作簿
    Sheet sheet1 = workbook.createSheet();
    
    // 按照自定义名称创建工作簿
    Sheet sheet2 = workbook.createSheet("自定义工作簿2");

  2. 获取单元格
    // 按照工作簿下标获取Sheet
    Sheet sheet01 = workbook.getSheetAt(0);
    
    // 按照工作簿名称获取Sheet
    Sheet sheet02 = workbook.getSheet("Sheet0");

  3. 获取单元格数量
int n = workbook.getNumberOfSheets();

row(数据行)

  1. 创建数据行
    Row row = sheet.createRow(0);
  2. 获取首行下标
    int first = sheet.getFirstRowNum();
  3. 获取尾行下标
    int last = sheet.getLastRowNum();
  4. 根据下标获取指定行
    Row row = sheet.getRow(0);
  5. 遍历所有行
    for(Row row : sheet) {
        System.out.println(row);
    }
  6. 遍历指定区域行
    for (int i = 1; i <= sheet.getLastRowNum(); i++) {
        Row row = sheet.getRow(i);
        System.out.println(row);
    }

 cell(单元格)

  1. 创建单元格
    Cell cell0 = row.createCell(0);
  2. 设置单元格值
    cell0.setCellValue(UUID.randomUUID().toString());
  3. 根据下标获取单元格
    Cell cell = row.getCell(1);
  4. 遍历所有单元格
    for(Cell cell : row) {
    				
    }
  5. 获取单元格类型
    CellType type = cell.getCellType();
  6. 获取单元格样式
    // 创建单元格样式
    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()); // 保存当前日期时间至本单元格
    
  7. 设置单元格对齐
    // 创建单元格样式
    CellStyle cellStyle = workbook.createCellStyle();
    
    //设置单元格的水平对齐类型。 此时水平居中
    cellStyle.setAlignment(HorizontalAlignment.CENTER);
    
    // 设置单元格的垂直对齐类型。 此时垂直靠底边
    cellStyle.setVerticalAlignment(VerticalAlignment.BOTTOM);
    在遇到超大文件的时候哟部分使用sxssf;
    try (Workbook workbook = new SXSSFWorkbook(100);
    				FileOutputStream fos = new FileOutputStream("c:\\test\\temp.xlsx")) {
        Sheet sheet1 = workbook.createSheet();
    
        for (int i = 0; i <= 1000000; i++) {
            Row row = sheet1.createRow(i);
            Cell cell0 = row.createCell(0);
            cell0.setCellValue(UUID.randomUUID().toString());
    
            Cell cell1 = row.createCell(1);
            cell1.setCellValue(new Date());
        }
    
        workbook.write(fos);
    } catch (IOException e) {
        e.printStackTrace();
    }

    会遇到很多种情况如内存溢出;Java中的文件处理————Excel_第2张图片

 

Easyexcel:(超大文件写入方式)

相关包;

Java中的文件处理————Excel_第3张图片

 使用easyexcel写入百万数据:

package liuzhen05;

import java.util.ArrayList;
import java.util.List;

import com.alibaba.excel.EasyExcel;

public class Demo {
	public static void main(String[] args) {
		long begin = System.currentTimeMillis();
        // 写入100w
        EasyExcel.write("d:\\text\\10w.xlsx", Order.class)
                 .sheet("订单列表")
                 .doWrite(data());
        long end = System.currentTimeMillis();
        System.out.println("共耗时"+(end-begin)+"毫秒");
    }
    
    // 创建100w条订单数据
    private static List data() {
        List list = new ArrayList();
        for (int i = 0; i < 1000000; i++) {
            list.add(new Order());
        }
        return list;
        
    }
}

你可能感兴趣的:(文件解析,文件,eclipse,java)