栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

处理excel文件需要用到的包ApachepPOL和EasyExcel;

Apacheppol:

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

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

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

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

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

目前多彩用xssf;

需要导入的相关类包 。

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();
    }

    会遇到很多种情况如内存溢出;

     

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

相关包;

 使用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;
        
    }
}

 

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1013145.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号