首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Apache poi XLSX到XLS

Apache POI是一个用于操作Microsoft Office格式文件的Java库。它提供了对Excel、Word和PowerPoint等文件的读写操作。在云计算领域中,Apache POI可以用于处理XLSX到XLS文件格式的转换。

XLSX和XLS是Excel文件的两种常见格式。XLSX是Microsoft Office 2007及以上版本中使用的XML格式,而XLS是早期版本(如Office 97-2003)中使用的二进制格式。有时候,我们可能需要将XLSX文件转换为XLS格式,以便与旧版本的Excel兼容或满足特定需求。

Apache POI提供了丰富的API,可以轻松地进行XLSX到XLS的转换。以下是一些常用的步骤:

  1. 导入Apache POI库的相关依赖。
  2. 创建一个新的XSSFWorkbook对象,用于读取XLSX文件。
  3. 遍历XSSFWorkbook中的每个Sheet。
  4. 对于每个Sheet,创建一个新的HSSFWorkbook对象,用于创建XLS文件。
  5. 遍历XSSFSheet中的每一行。
  6. 对于每一行,创建一个新的HSSFRow对象,并复制行高、隐藏状态等属性。
  7. 遍历XSSFRow中的每个单元格。
  8. 对于每个单元格,创建一个新的HSSFCell对象,并复制单元格的样式、值等属性。
  9. 将HSSFCell添加到HSSFRow中。
  10. 将HSSFRow添加到HSSFSheet中。
  11. 将HSSFSheet添加到HSSFWorkbook中。
  12. 使用HSSFWorkbook对象将数据写入新的XLS文件。

以下是一个示例代码,演示了如何使用Apache POI进行XLSX到XLS的转换:

代码语言:txt
复制
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class XLSXtoXLSConverter {
    public static void main(String[] args) {
        String xlsxFilePath = "path/to/input.xlsx";
        String xlsFilePath = "path/to/output.xls";

        try (Workbook xlsxWorkbook = new XSSFWorkbook(new FileInputStream(xlsxFilePath));
             Workbook xlsWorkbook = new HSSFWorkbook()) {

            for (Sheet xlsxSheet : xlsxWorkbook) {
                Sheet xlsSheet = xlsWorkbook.createSheet(xlsxSheet.getSheetName());

                for (Row xlsxRow : xlsxSheet) {
                    Row xlsRow = xlsSheet.createRow(xlsxRow.getRowNum());
                    xlsRow.setHeight(xlsxRow.getHeight());
                    xlsRow.setZeroHeight(xlsxRow.getZeroHeight());

                    for (Cell xlsxCell : xlsxRow) {
                        Cell xlsCell = xlsRow.createCell(xlsxCell.getColumnIndex());
                        xlsCell.setCellStyle(xlsxCell.getCellStyle());

                        switch (xlsxCell.getCellType()) {
                            case STRING:
                                xlsCell.setCellValue(xlsxCell.getStringCellValue());
                                break;
                            case NUMERIC:
                                xlsCell.setCellValue(xlsxCell.getNumericCellValue());
                                break;
                            case BOOLEAN:
                                xlsCell.setCellValue(xlsxCell.getBooleanCellValue());
                                break;
                            case FORMULA:
                                xlsCell.setCellFormula(xlsxCell.getCellFormula());
                                break;
                            // Handle other cell types if needed
                        }
                    }
                }
            }

            try (FileOutputStream fileOutputStream = new FileOutputStream(xlsFilePath)) {
                xlsWorkbook.write(fileOutputStream);
            }

            System.out.println("XLSX to XLS conversion completed successfully.");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

请注意,上述代码仅为示例,实际使用时可能需要根据具体需求进行修改和优化。

推荐的腾讯云相关产品:腾讯云对象存储(COS),它是一种高可用、高可靠、低成本的云存储服务,适用于存储和处理各种类型的文件。您可以将转换后的XLS文件上传到腾讯云对象存储,并通过COS提供的API进行管理和访问。

腾讯云产品介绍链接地址:https://cloud.tencent.com/product/cos

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • R语言读取 xlsxxls 文件

    「前言:」 ❝今天我用openxlsx包中的read.xlsx读取xls文件时,竟然报错了。我记得有一个包是可以读取Excel2003的,搜索了一下,发现不太容易查找,就写一遍博客记录一下。...❞ xlsx文件,是2007,2013,2016版本的Excel文件,R语言中可以通过openxlsx包进行读取。 1. 读取xlsx文件 > dd = read.xlsx(".....文件报错 如果读取xls文件,报错: > dat = read.xlsx("计算遗传力.xls")Error in read.xlsx.default("计算遗传力.xls") : openxlsx...3. readxl读取xls文件 > library(readxl)> dd = read_xls("计算遗传力.xls") 4....汇总 openxls通过函数read.xlsx读取xlsx文件 readxl通过函数read_xls读取xls文件 软件安装方法:install.packages("openxlsx") 以及 install.packages

    11.3K40

    Excel大批量数据的导入和导出,如何做优化?

    POI的坑,以及分别对于xlsxlsx文件怎么优化大批量数据的导入和导出。...导出优化 事例源码基于POI3.17版本 XLSX 由于xlsx底层使用xml存储,占用内存会比较大,官方也意识这个问题,在3.8版本之后,提供了SXSSFWorkbook来优化写性能。...XLS POI没有像XLSX那样对XLS的写做出性能的优化,原因是: 官方认为XLS的不像XLSX那样占内存 XLS一个Sheet最多也只能有65535行数据 导入优化 POI对导入分为3种模式,用户模式...XLSX POIXLSX支持Event Model和Event User Model XLSX的Event Model 使用 官网例子: http://svn.apache.org/repos/asf...XLS POIXLS支持Event Model 使用 官方例子 http://svn.apache.org/repos/asf/poi/trunk/src/examples/src/org/apache

    3.6K11

    POI 如何处理 Excel 大批量数据的导入和导出?

    概要 Java对Excel的操作一般都是用POI,但是数据量大的话可能会导致频繁的FGC或OOM,这篇文章跟大家说下如果避免踩POI的坑,以及分别对于xlsxlsx文件怎么优化大批量数据的导入和导出。...XLSX 由于xlsx底层使用xml存储,占用内存会比较大,官方也意识这个问题,在3.8版本之后,提供了SXSSFWorkbook来优化写性能。...XLS POI没有像XLSX那样对XLS的写做出性能的优化,原因是: 官方认为XLS的不像XLSX那样占内存 XLS一个Sheet最多也只能有65535行数据 导入优化 POI对导入分为3种模式,用户模式...XLSX POIXLSX支持Event Model和Event User Model XLSX的Event Model 使用 官网例子: http://svn.apache.org/repos/asf...XLS POIXLS支持Event Model 使用 官方例子 http://svn.apache.org/repos/asf/poi/trunk/src/examples/src/org/apache

    4.8K21

    Java进阶-常用Excel处理库的比较

    这些库从功能全面的Apache POI适合轻量级操作的JExcelAPI,再到专为大数据量设计的EasyExcel,以及提供丰富功能的Aspose.Cells for Java,都为Java开发者提供了多样的选择...一、Apache POI1、Apache POI 介绍Apache POI 是一个极其强大的库,专为处理和生成Microsoft Office文档而设计,特别是Excel文档。...它不仅支持旧版的.xls文件,也完美支持现代的.xlsx文件格式。这使得Apache POI成为处理企业级数据的首选库,无论是在数据分析、报表生成还是自动化办公环境中都有广泛的应用。...Aspose.Cells for JavaSimpleXLSX 文件格式支持 .xls, .xlsx .xls .xls, .xlsx .xls...JExcelAPI 提供了更轻量级的解决方案,适用于简单的.xls文件处理。尽管它的功能比Apache POI简单,但在处理不需要复杂格式和图表的小型数据文件时,它的性能和资源消耗都很理想。

    43733

    SpringBoot图文教程9—SpringBoot 导入导出 Excel 「Apache Poi

    那么在 SpringBoot 中如何使用 Poi 呢?从本文开始将会说三种使用 Poi 的姿势:Apache Poi,EasyPoi,阿里开源的EasyExcel。 话不多说,马上开始。...集成 Poi 什么是 Poi Apache PoiApache 的一个开源项目,用Java代码通过 poi 技术可以实现 读取 和 生成 Excel 文档。...关于 Poi 的简介非常的少,接下来我们简单说一些和Excel相关的常识 通过 office Excel软件或者 wps 常用的Excel格式有两种:xlsxlsx 上图中的两个文件都是Excel...对应关系如下: Excel中的概念 Poi对应的对象 Excel 文件 HSSFWorkbook (xls)XSSFWorkbook(xlsx) Excel 的工作表 HSSFSheet Excel 的行...在项目中导入依赖 org.apache.poi poi</artifactId

    4.6K30
    领券