Excel文件解析以及超大Excel文件读写

这篇具有很好参考价值的文章主要介绍了Excel文件解析以及超大Excel文件读写。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.概述

         在应用程序的开发过程中,经常需要使用Excel 文件来进行数据的导入或导出。所以,在通过ava语言实现此类需求的时候,往往会面临着Excel文件的解析(导入)或生成(导出)。
        在Java技术生态圈中,可以进行Excel文件处理的主流技术包括: Apache POI 、JXL 、Alibaba EasyExcel 等。
        Apache POI 基于DOM方式进行解析,将文件直接加载内存,所以速度较快,适合Excel 文件数据量不大的应用场景。JXL只支持Excel 2003以下版本,所以不太常见。
        Alibaba EasyExcel 采用逐行读取的解析模式,将每一行的解析结果以观察者的模式通知处理
( AnalysisEventListener ) , 所以比较适合数据体量较大的Excel 文件解析。

2.Apache POI

        Apache POI是用Java 编写的免费开源的跨平台的Java API,Apache POI提供给Java 程序对Microsoft office 格式档案进行读写功能的API 开源类库:
        JURCE - 它分别提供对不同格式文件的解析:
        HSSF - 提供读写Microsoft Excel格式档案的功能。
        XSSF - 提供读写Microsoft Excel OOXML格式档案的功能。
        HWPF - 提供读写Microsoft Word格式档案的功能。
        HSLF - 提供读写Microsoft PowerPoint格式档案的功能。
        HDGF - 提供读写 Microsoft Visio格式档案的功能。

3.使用XSSF解析Excel文件

        HSSF用于解析旧版本( *.xIs ) Excel文件,由于旧版本的Excel文件只能存在65535行数据,所以目前已经不常用。所以目前主要采用XSSF进行新版本( *.xlsx ) Exce文件的解析。

创建Excel文件 

         当我们要解析一个Excel文件时,需要创建一个Workbook的实现类XSSFWorkbook,它就代表了一个Excel文件,

try (Workbook workbook = new XSSFWorkbook();
				FileOutputStream fos = new FileOutputStream("D:\\share\\Demo01.xlsx")) {
    workbook.write(fos);
} catch (IOException e) {
    e.printStackTrace();
}

 加载Excel文件

        可以创建FileInputStream文件输入流对象那指定路径下的Excel文件传入到XSSFWorkbook中,推荐写入到try-with-resources中例如:

// 输入流
FileInputStream fis = new FileInputStream("D:\\share\\Demo01.xlsx");

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

 Sheet(工作簿)

         创建工作簿对象

// 按照默认名称创建工作簿
Sheet sheet1 = workbook.createSheet();

// 按照自定义名称创建工作簿
Sheet sheet2 = workbook.createSheet("自定义工作簿2");

        获取工作簿

// 按照名称获取工作簿
// org.apache.poi.ss.usermodel.Sheet ss包下的
Sheet sheet0 = workbook.getSheet("Sheet0");

// 按照下标获取工作簿
Sheet sheet1 = workbook.getSheetAt(1);"Sheet0");

        获取工作簿的数量

int n = workbook.getNumberOfSheets();

Row(行数据)

        通过sheet来进行数据行的获取或创建

获取当前数据行

Row row = sheet.createRow(0);

获取首行下标

int first = sheet.getFirstRowNum();

获取尾行下标 

int last = sheet.getLastRowNum();

根据下标获取指定行 

Row row = sheet.getRow(0);

遍历所有行

for(Row row : sheet) {
    System.out.println(row);
}

 遍历指定行

for (int i = 1; i <= sheet.getLastRowNum(); i++) {
    Row row = sheet.getRow(i);
    System.out.println(row);
}

 文章来源地址https://www.toymoban.com/news/detail-467229.html

Cell单元格

创建单元格 

Cell cell0 = row.createCell(0);

设置单元格值

cell0.setCellValue(//对应类型数据值);

根据下标获取单元格

Cell cell = row.getCell(1);

遍历所有单元格

for(Cell cell : row) {
				
}

获取单元格的类型

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

4.超大Excel文件读写

        一般进行超大Excel文件的读写,一般两种方式,第一种使用SXSSFWorkbook进行写入,通过设置SXXFWorkbook 的构造参数,可以设置每次在内存中保持的行数,当达到这个值的时候,那么会把这些数据flush 到磁盘上,这样就不会出现内存不够的情况。第二种使用阿里巴巴提供的EasyExcel工厂类进行写入读取操作。但是对于不同电脑,不同CPU,不同内存读写的速度也是不同的。

        我的电脑比较老CPU是Intel(R) Core(TM) i5-3320M CPU @ 2.60GHz 2.60 GHz,内存(RAM)是4.00GB,以下是对应的使用EasyExcel写入100万条数据运行后统计的总耗时:

Excel文件解析以及超大Excel文件读写

         我的电脑如果使用SXSSFWorkbook来进行一般的读入数据直接把IDEA卡到无响应,作者也是很无奈,所以更推荐与使用EasyExcel来进行超大Excel文件的读写。

 

到了这里,关于Excel文件解析以及超大Excel文件读写的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • python之批量读写excel文件

    首先,导入openpyxl库中的读取和新建文件包(比较官方的名称我没有查,就按照好理解的方向这样说),文中关于行和列的理解都是个人想法,可能有和读者不同之处。 先详细说怎么样读取单个excel文件,批量在后边写。 excel表格格式如下,需要弄清楚的就是excel文件路径,以

    2024年02月02日
    浏览(50)
  • Python读写EXCEL文件常用方法

    python读写excel的方式有很多,不同的模块在读写的讲法上稍有区别,这里我主要介绍几个常用的方式。 用xlrd和xlwt进行excel读写; 用openpyxl进行excel读写; 用pandas进行excel读写; 为了方便演示,我这里新建了一个data.xls和data.xlsx文件,第一个工作表sheet1区域“A1:E5”的内容如下

    2024年02月11日
    浏览(44)
  • Python使用openpyxl读写excel文件

    需求:读入sample.xlsx中的信息,通过分析其中的身份证号信息,得到每个人的出生日期,性别,年龄,所在省份,星座,属相等等,将结果写入到另一个excel文件中。 首先,要使用openpyxl第三方库需要安装,安装方法如下: 程序一开头为了能使用第三方库,需要先导入 读入

    2024年02月09日
    浏览(36)
  • Python读写EXCEL文件常用方法大全

    python读写excel的方式有很多,不同的模块在读写的讲法上稍有区别,这里我主要介绍几个常用的方式。 用xlrd和xlwt进行excel读写; 用openpyxl进行excel读写; 用pandas进行excel读写; 为了方便演示,我这里新建了一个data.xls和data.xlsx文件,第一个工作表sheet1区域“A1:E5”的内容如下

    2024年01月19日
    浏览(59)
  • Apache-POI读写excel文件

    ApachePOI是用Java编写的免费开源的跨平台的JavaAPI,ApachePOI提供API给Java程序对MicrosoftOffice格式档案读和写的功能,其中使用最多的就是使用POI操作Excel文件。 依赖导入: 针对不同的文档形式来操作的时候会提供相应的一些类 HSSF - 提供读写Microsoft Excel XLS格式档案的功能 XSSF -

    2024年02月05日
    浏览(37)
  • Python 读写 Excel 文件库推荐和使用教程

    Python 读写 Excel 文件的库总体看还是很多的, 各有其优缺点, 以下用一图总结各库的优缺点, 同时对整体友好的库重点介绍其使用教程。 库名称 .xls .xlsx 读取 写入 修改 保存 格式调整 插入图片 xlrd √ √ √ × × × × × xlwt √ × × √ √ √ √ √ xlutils √ × × √ √ √ × ×

    2024年02月11日
    浏览(44)
  • Python 实现txt、excel、csv文件读写【附源码】

    前言 一、txt文件读写 二、excel文件读写 总结 本文介绍使用Python进行文件读写操作,包括txt文件、excel文件(xlsx、xls、csv) 编译器使用的是PyCharm read()                  # 一次性读取全部内容 readline()            # 读取第一行内容 readlines()          # 读取文本全部内

    2024年02月01日
    浏览(69)
  • C++读写excel文件的的第三方库

    用于读取、写入、创建和修改 Microsoft Excel® (.xlsx) 文件的 C++ 库。 xlnt 是一个现代 C++ 库,用于操作内存中的电子表格以及从 XLSX 文件读取/写入它们,如ECMA 376 第 4 版中所述。xlnt 1.0 版的首次公开发布是在 2017 年 5 月 10 日。目前的工作重点是增加兼容性、提高性能以及集思广

    2024年02月05日
    浏览(50)
  • xlsx.js: 基于 JavaScript 的 Excel 文件读写库

    如果你需要在浏览器端处理 Excel 文件,那么 xlsx.js 可能是一个不错的选择。这是一个基于 JavaScript 的库,可以方便地读取、创建和修改 Excel 文件。 支持多种文件格式:.xlsx, .xlsm, .xlsb, .ods, .csv 等。 支持数据的读取和写入。 支持多种单元格样式,如字体、颜色、背景色等。

    2024年04月17日
    浏览(53)
  • <九> objectARX开发:读写Excel、json与txt格式文件

      在实际应用中,有时候我们需要通过文本格式或者表格等格式来传递数据,例如*.txt、Excel表格或者*.json文件。此时我们就需要想办法来读写这些数据。本节我们来说一下如何读写读写Excel、json与txt格式文件。 2.1 读写Excel   excel文件的读写有多种方式来实现,这里我们

    2024年02月09日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包