poi excel 2003怎么操作?poi读取excel 2003格式

在使用 Apache POI 处理 Excel 2003 格式(即 .xls 二进制格式)时,你需要使用 HSSF 接口。

以下是关于使用 POI 操作 Excel 2003 文件的核心要点、代码示例和注意事项:

【狂神说Java】POI及EasyExcel一小时搞定通俗易懂
加载中
【狂神说Java】POI及EasyExcel一小时搞定通俗易懂

核心类对应关系

概念 Excel 2003 (.xls) Excel 2007+ (.xlsx)
工作簿 HSSFWorkbook XSSFWorkbook
工作表 HSSFSheet XSSFSheet
HSSFRow XSSFRow
单元格 HSSFCell XSSFCell
样式 HSSFCellStyle XSSFCellStyle

注意HSSF 代表 “Horrible SpreadSheet Format”,是 POI 中较老的技术实现,基于二进制格式。


Maven 依赖

确保你引入了正确的 POI 依赖:

<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>5.2.3</version> <!-- 请使用最新稳定版 -->
</dependency>

poi excel 2003怎么操作?poi读取excel 2003格式

如果你需要处理 Excel 2007+ 格式,还需要引入 poi-ooxml,但对于纯 2003 格式,只需 poi 即可。


完整代码示例

✅ 示例 1:创建并写入 Excel 2003 文件

import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.;
import java.io.FileOutputStream;
import java.io.IOException;
public class Excel2003Writer {
    public static void main(String[] args) {
        // 1. 创建工作簿 (HSSFWorkbook 对应 .xls)
        Workbook workbook = new HSSFWorkbook();
        // 2. 创建工作表
        Sheet sheet = workbook.createSheet("测试Sheet");
        // 3. 创建行 (索引从0开始)
        Row row = sheet.createRow(0);
        // 4. 创建单元格并设置值
        Cell cell = row.createCell(0);
        cell.setCellValue("Hello Excel 2003");
        // 5. 设置单元格样式(可选)
        CellStyle style = workbook.createCellStyle();
        Font font = workbook.createFont();
        font.setBold(true);
        font.setColor(IndexedColors.RED.getIndex());
        style.setFont(font);
        cell.setCellStyle(style);
        // 6. 写入文件
        try (FileOutputStream outputStream = new FileOutputStream("output_2003.xls")) {
            workbook.write(outputStream);
            System.out.println("Excel 2003 文件创建成功!");
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                workbook.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

✅ 示例 2:读取 Excel 2003 文件

import org.apache.p

poi excel 2003怎么操作?poi读取excel 2003格式

oi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.; import java.io.FileInputStream; import java.io.IOException; public class Excel2003Reader { public static void main(String[] args) { String filePath = "output_2003.xls"; try (FileInputStream fis = new FileInputStream(filePath); Workbook workbook = new HSSFWorkbook(fis)) { // 使用 HSSFWorkbook 读取 .xls Sheet sheet = workbook.getSheetAt(0); Row row = sheet.getRow(0); Cell cell = row.getCell(0); // 获取单元格值 if (cell != null) { switch (cell.getCellType()) { case STRING: System.out.println("单元格值: " + cell.getStringCellValue()); break; case NUMERIC: System.out.println("单元格值: " + cell.getNumericCellValue()); break; default: System.out.println("未知类型"); } } } catch (IOException e) { e.printStackTrace(); } } }

重要限制与注意事项

⚠️ 行数限制

  • Excel 2003 (.xls):最多支持 65,536 行256 列
  • 如果数据量超过此限制,必须使用 Excel 2007+ 格式(.xlsx),它支持 104 万行以上。

⚠️ 性能问题

  • HSSFWorkbook 将整个文件加载到内存中,对于大文件(即使未超行数限制)可能导致 OutOfMemoryError
  • 如果处理大文件,建议使用 SXSSFWorkbook(针对 .xlsx)或考虑流式读取(但 HSSF 本身不支持流式读取,这是其设计缺陷)。

poi excel 2003怎么操作?poi读取excel 2003格式

⚠️ 格式兼容性

  • HSSF 不支持 Excel 2007+ 的新特性(如:图表、图片、宏、数据透视表等高级功能)。
  • 如果你需要写入图片、图表等,必须使用 XSSFWorkbook(.xlsx 格式)。

如何自动判断文件格式?

如果你不确定用户上传的文件是 .xls 还是 .xlsx,可以使用 WorkbookFactory 自动识别:

import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.WorkbookFactory;
import java.io.FileInputStream;
public class AutoDetectWorkbook {
    public static void main(String[] args) throws Exception {
        String filePath = "file.xls"; // 或 .xlsx
        try (FileInputStream fis = new FileInputStream(filePath)) {
            // 自动识别格式并创建对应的 Workbook 对象
            Workbook workbook = WorkbookFactory.create(fis);
            // 后续操作...
            Sheet sheet = workbook.getSheetAt(0);
            System.out.println("工作表名称: " + sheet.getSheetName());
            workbook.close();
        }
    }
}

推荐:除非有特殊需求(如兼容极老系统),否则建议优先使用 .xlsx 格式,因为它的功能更强大、性能更好、更稳定。


  • 使用 HSSFWorkbook 处理 Excel 2003 (.xls)。
  • 注意 65,536 行 的限制。
  • 对于新项目,建议直接使用 .xlsx 格式(XSSFWorkbook)。
  • 使用 WorkbookFactory.create() 可以自动兼容两种格式。

如有更多具体问题(如样式设置、合并单元格、读取大数据量等),欢迎继续提问!

首发原创文章,作者:王坚‌,如若转载,请注明出处:https://idctop.com/article/480891.html

(0)
债券价格excel怎么算?债券收益率计算公式
上一篇 2026年7月10日 16:15
H3C路由器域名解析失败怎么办?如何设置DNS服务器
下一篇 2026年7月10日 16:21

相关推荐

  • ajax大数据量处理卡顿怎么办?前端异步加载优化方案

    处理Ajax大数据量时,核心在于放弃全量加载,采用分页查询、虚拟滚动或增量更新策略,配合后端索引优化,可显著提升前端渲染性能与用户体验,在Web开发领域,前端与后端的数据交互早已不是简单的“拉取-显示”模式,当数据量从几百条膨胀到几万甚至百万级时,传统的Ajax全量请求会导致浏览器内存溢出、页面卡顿,甚至直接崩……

    2026年6月4日
    5000
  • 服务器8080端口无法访问怎么办?原因分析与解决方法

    服务器8080端口无法访问,通常由防火墙拦截、端口未监听、进程异常占用或云平台安全组配置错误四大核心因素导致,解决问题的关键在于由外而内、层层排查网络链路与服务状态,遇到此类故障,切勿盲目修改配置文件,应遵循系统化的排查逻辑,快速定位故障点并恢复服务, 排查网络层防火墙与安全组设置网络层面的拦截是导致端口不通的……

    2026年4月5日
    10500
  • AI视频文字识别SDK怎么用?视频字幕自动提取工具

    AI视频文字识别SDK通过深度学习模型直接提取视频帧中的文本信息,支持多语言、手写体及复杂背景下的精准识别,是当前提升内容处理效率的关键技术组件,爆发的时代,视频已成为信息传递的主流载体,视频中的文字往往被“锁”在动态画面里,难以被搜索引擎抓取或二次利用,传统的人工录入方式不仅耗时耗力,且错误率极高,引入AI视……

    2026年6月7日
    4000
  • ASP中LIKE关键字的使用方法和最佳实践有哪些疑问?

    在ASP中,LIKE操作符是数据库查询的核心工具,用于实现模糊匹配和模式搜索,它通过通配符替代精确值,特别适用于姓名搜索、日志分析或产品筛选等场景,以下是详细指南:LIKE操作符的核心语法与通配符SELECT * FROM Users WHERE UserName LIKE '%john%' 通……

    2026年2月6日
    11000
  • 如初app显示服务器开小差是怎么回事,怎么解决?

    如初app显示服务器开小差,本质是客户端向服务器发送请求后,没有得到有效响应,多数情况下是官方服务器维护或网络链路问题,并非你的手机损坏,遇到这个提示,先别急着卸载,按顺序排查网络、缓存和官方公告,大概率在几分钟内就能恢复,下面把原因和解决办法掰开揉碎讲清楚,如初app服务器开小差是怎么回事最直接的原因:官方服……

    2026年8月26日
    100
  • 迈普视通S3服务器如何切出去,怎么退出?

    迈普视通S3服务器切出去的核心操作,是在Videowall软件中选中目标画面源,通过“输出选项”里的“切换模式”把信号指派到对应的输出口或LED大屏,全程约10秒完成单路切换,实际工作中,很多人把“切出去”理解为三件事:切换画面源、切换输出目标、或者跨设备级联输出,下面按这几种场景,把S3的操作路径和常见坑一次……

    2026年8月14日
    500
  • LOL一直连接服务器失败怎么回事,怎么办

    打开《英雄联盟》一直提示连接服务器失败,最直接的原因是网络连接异常或客户端文件受损,可以通过重启路由、使用游戏自带的修复工具以及更改DNS设置来快速解决,英雄联盟连接服务器失败原因分析遇到连接服务器失败,先别急着砸电脑,我从几个常见维度帮你拆解,绝大多数问题都出在下面这些环节里,网络连接不稳定是首要原因你的网络……

    2026年8月5日
    1300
  • 手机网易我的世界租赁服务器能加mod吗?,怎么加mod

    手机网易我的世界租赁服务器无法像国际版那样直接往服务端塞Java版mod,但通过行为包(Behavior Pack)注入和插件服替代方案,完全能实现贴近mod的玩法体验,手游我的世界租赁服能装mod吗先说结论:网易版租赁服务器在官方框架下不开放服务端mod接口,行业共识认为,网易版与国际版底层架构存在本质差异……

    2026年8月24日
    300
  • ajax与jsonp区别是什么?ajax跨域请求失败怎么办

    Ajax 基于 XMLHttpRequest 对象实现同域或跨域数据交互,而 JSONP 利用 script 标签的跨域特性通过回调函数获取数据,前者支持所有 HTTP 方法且更现代,后者仅支持 GET 请求且为早期跨域解决方案,在 Web 开发的漫长演进中,前端与后端的数据握手方式经历了从粗暴到精细的变革,理……

    2026年6月3日
    3600
  • AIoT智物链是什么?AIoT智物链如何赋能行业

    AIoT智物链通过打通“感知-传输-决策-执行”闭环,将传统物联网升级为具备自主智能的生态网络,是当前企业实现数字化转型的核心基础设施,很多人对物联网的理解还停留在“万物互联”的初级阶段,认为只要设备连上网就能产生价值,这种认知已经滞后了,真正的变革在于“智”字,当海量数据不再只是被记录,而是被实时分析、预测并……

    2026年6月10日
    3400

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注