熟悉下POI的HSSF

用POI HSSF处理EXCEL表格 处理图表 目前POI版本为2.5.1,org.apache.poi.hssf.usermodel包里有一个HSSFChart类,里面只有一个空方法createBarChart(),表明POI还不直接支持EXCEL图表。替代方法还是有的:因为EXCEL图表的源数据引用自EXCEL单元格。我们可以先新建一个EXCEL工作薄,作为模板,在里面创建图表,指定它引用工作表中的一些特定单元格。然后 阅读详情

因为某些需要,需要用Java保存一些数据成Excel,听朋友说Apache POI Project 不错(以下下简称POI)

POI提供了一系列接口用于读取和生成微软的OLE 2 Compound Document format,就是Excel,Word..

 

因为现在只关心如何读取和生成Excel,所以就直接跳转到

http://poi.apache.org/hssf/index.html 超看如何使用HSSF

 

 这是关于POI-HSSF的简单介绍

POI-HSSF - Java API To Access Microsoft Excel Format Files

Overview

HSSF is the POI Project's pure Java implementation of the Excel '97(-2002) file format.

HSSF provides a way to read spreadsheets create, modify, read and write XLS spreadsheets It provides:

  • low level structures for those with special needs
  • an eventmodel api for efficient read-only access
  • a full usermodel api for creating, reading and modifying XLS files

An alternate way of generating a spreadsheet is via the Cocoon serializer (yet you'll still be using HSSF indirectly). With Cocoon you can serialize any XML datasource (which might be a ESQL page outputting in SQL for instance) by simply applying the stylesheet and designating the serializer.

If you're merely reading spreadsheet data, then use the eventmodel api in the org.apache.poi.hssf.eventusermodel package.

If you're modifying spreadsheet data then use the usermodel api. You can also generate spreadsheets this way.

 

在HSSF的页面内快速浏览了下,发现一个很不错的页面(正好是我需要的)

Busy Developers' Guide to HSSF Features

Busy Developers' Guide to Features

Want to use HSSF read and write spreadsheets in a hurry? This guide is for you. If you're after more in-depth coverage of the HSSF user-API please consult the HOWTO guide as it contains actual descriptions of how to use this stuff.

这个页面包含了大量的代码样例供没有时间查看API文档的程序员看的~~(非常不错的做法啊,人性化:0)

http://poi.apache.org/hssf/quick-guide.html

 

这是我用网页上代码样例(部分)copy出来的测试代码:)

执行后在工程文件文件夹内就成生成名为workbook.xls的Excel文件了

package blog.youkuaiyun.com.snailjava.hssf;

import java.io.*;
import java.util.Date;

import org.apache.poi.hssf.usermodel.*;
import org.apache.poi.hssf.util.HSSFColor;

/**
 * <p>Title: HSSF</p>
 *
 * <p>Description: </p>
 *
 * <p>Copyright: Copyright (c) 2007</p>
 *
 * <p>Company: geogro</p>
 *
 * @author snail
 * @version 1.0
 */

public class BusyDevTestHssf {
    public BusyDevTestHssf() {
    }

    public void createNewWork() {
        HSSFWorkbook wb = new HSSFWorkbook();
        try {
            FileOutputStream fileOut = new FileOutputStream("workbook.xls");
            wb.write(fileOut);
            fileOut.close();
        } catch (FileNotFoundException ex) {
        } catch (IOException ex) {
        }
    }

    public void createNewSheet() {
        try {
            HSSFWorkbook wb = new HSSFWorkbook();
            HSSFSheet sheet1 = wb.createSheet("new sheet");
            HSSFSheet sheet2 = wb.createSheet("second sheet");
            FileOutputStream fileOut = new FileOutputStream("workbook.xls");
            wb.write(fileOut);
            fileOut.close();

        } catch (Exception e) {
        }
    }

    public void createCells() {
        try {
            HSSFWorkbook wb = new HSSFWorkbook();
            HSSFSheet sheet = wb.createSheet("new sheet");

            // Create a row and put some cells in it. Rows are 0 based.
            HSSFRow row = sheet.createRow((short) 0);
            // Create a cell and put a value in it.
            HSSFCell cell = row.createCell((short) 0);
            cell.setCellValue(1);

            // Or do it on one line.
            row.createCell((short) 1).setCellValue(1.2);
            row.createCell((short) 2).setCellValue("This is a string");
            row.createCell((short) 3).setCellValue(true);

            // Write the output to a file
            FileOutputStream fileOut = new FileOutputStream("workbook.xls");
            wb.write(fileOut);
            fileOut.close();

        } catch (Exception e) {
        }
    }

    public void CreatDateCells() {
        try {
            HSSFWorkbook wb = new HSSFWorkbook();
            HSSFSheet sheet = wb.createSheet("new sheet");

            // Create a row and put some cells in it. Rows are 0 based.
            HSSFRow row = sheet.createRow((short) 0);

            // Create a cell and put a date value in it.  The first cell is not styled
            // as a date.
            HSSFCell cell = row.createCell((short) 0);
            cell.setCellValue(new Date());

            // we style the second cell as a date (and time).  It is important to
            // create a new cell style from the workbook otherwise you can end up
            // modifying the built in style and effecting not only this cell but other cells.
            HSSFCellStyle cellStyle = wb.createCellStyle();
            cellStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat(
                    "m/d/yy h:mm"));
            cell = row.createCell((short) 1);
            cell.setCellValue(new Date());
            cell.setCellStyle(cellStyle);

            // Write the output to a file
            FileOutputStream fileOut = new FileOutputStream("workbook.xls");
            wb.write(fileOut);
            fileOut.close();
        } catch (FileNotFoundException ex) {
        } catch (IOException ex) {
        }
    }

    public void createBorders() {
        try {
            HSSFWorkbook wb = new HSSFWorkbook();
            HSSFSheet sheet = wb.createSheet("new sheet");

            // Create a row and put some cells in it. Rows are 0 based.
            HSSFRow row = sheet.createRow((short) 1);

            // Create a cell and put a value in it.
            HSSFCell cell = row.createCell((short) 1);
            cell.setCellValue(4);

            // Style the cell with borders all around.
            HSSFCellStyle style = wb.createCellStyle();
            style.setBorderBottom(HSSFCellStyle.BORDER_THIN);
            style.setBottomBorderColor(HSSFColor.BLACK.index);
            style.setBorderLeft(HSSFCellStyle.BORDER_THIN);
            style.setLeftBorderColor(HSSFColor.GREEN.index);
            style.setBorderRight(HSSFCellStyle.BORDER_THIN);
            style.setRightBorderColor(HSSFColor.BLUE.index);
            style.setBorderTop(HSSFCellStyle.BORDER_MEDIUM_DASHED);
            style.setTopBorderColor(HSSFColor.BLACK.index);
            cell.setCellStyle(style);

            // Write the output to a file
            FileOutputStream fileOut = new FileOutputStream("workbook.xls");
            wb.write(fileOut);
            fileOut.close();
        } catch (FileNotFoundException ex) {
        } catch (IOException ex) {
        }

    }

    public void createDifferentTypesOfCells() {
        try {
            HSSFWorkbook wb = new HSSFWorkbook();
            HSSFSheet sheet = wb.createSheet("new sheet");
            HSSFRow row = sheet.createRow((short) 2);
            row.createCell((short) 0).setCellValue(1.1);
            row.createCell((short) 1).setCellValue(new Date());
            row.createCell((short) 2).setCellValue("a string");
            row.createCell((short) 3).setCellValue(true);
            row.createCell((short) 4).setCellType(HSSFCell.CELL_TYPE_ERROR);

            // Write the output to a file
            FileOutputStream fileOut = new FileOutputStream("workbook.xls");
            wb.write(fileOut);
            fileOut.close();
        } catch (FileNotFoundException ex) {
        } catch (IOException ex) {
        }
    }

    public void createFillWithColor() {

        try {
            HSSFWorkbook wb = new HSSFWorkbook();
            HSSFSheet sheet = wb.createSheet("new sheet");

            // Create a row and put some cells in it. Rows are 0 based.
            HSSFRow row = sheet.createRow((short) 1);

            // Aqua background
            HSSFCellStyle style = wb.createCellStyle();
            style.setFillBackgroundColor(HSSFColor.AQUA.index);
            style.setFillPattern(HSSFCellStyle.BIG_SPOTS);
            HSSFCell cell = row.createCell((short) 1);
            cell.setCellValue("X");
            cell.setCellStyle(style);

            // Orange "foreground", foreground being the fill foreground not the font color.
            style = wb.createCellStyle();
            style.setFillForegroundColor(HSSFColor.ORANGE.index);
            style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
            cell = row.createCell((short) 2);
            cell.setCellValue("X");
            cell.setCellStyle(style);

            // Write the output to a file
            FileOutputStream fileOut = new FileOutputStream("workbook.xls");
            wb.write(fileOut);
            fileOut.close();
        } catch (FileNotFoundException ex) {
        } catch (IOException ex) {
        }

    }


    public static void main(String[] args) {
        BusyDevTestHssf busydevtesthssf = new BusyDevTestHssf();
        System.out.println("TestHSSF!");
//      测试 busydevtesthssf对象的任何方法
        busydevtesthssf.createFillWithColor();
        System.out.println("--------------");

    }
}

 

老猪:因为Apache上的开源项目基本上都是无偿为人民服务的,所以作者都没有多少时间和精力去做详细教学和文档说明,HSSF的【Busy Developers' Guide to HSSF Features】这种形式的文档既简单,又直观,非常方便,是非常好的想法,以后自己写的代码的文档也可以借鉴下。

POI HSSF SXSSF 百万写入 在实际项目开发中,有时需要多次下载excel报表,以此专门开发写入excel的工具类 这工具采用POI的HSSF和SXSSF两种API进行下载,可实现几万条(HSSF)和百万条(SXSSF)的写入,当数据大小超过23000条(可改)时自动切换API进行写入。 使用Collection容器装载需要写入的数据,这您就需要专门写bean来保存对象值。当然还有其他方式,比如使用json来保存写入数据,... 阅读详情

相关推荐

Oracle VM VirtualBox虚拟机网络配置与静态IP设置实战

本文详细讲解了Oracle VM VirtualBox虚拟机的网络配置,特别是如何设置静态IP以实现稳定访问。文章对比了NAT、桥接、仅主机等网络模式,并提供了从VirtualBox管理界面到Linux系统内部的完整配置步骤,帮助用户解决IP变动问题,构建可靠的本地开发测试环境。

weixin_28365523的博客 510

java 读取excel文件头_POI读写Excel POI读写Excel文件

POI读写Excel POI读写Excel文件一、Excel基础二、HSSF概况三、通过usermodel读取文件四、通过usermodel写入文件五、通过eventusermodel读取文件六、HSSF电子表格结构七、通过HPSF读取文档属性八、文档摘要信息九、附录━━━━━━正文:━━━━━━在上一篇文章中,我们介绍了POI项目的基本概念,了解了如何用POI来读写OLE2复合文档结构,并给出了...

weixin_28455801的博客 550

使用vite+react+ts+Ant Design开发后台管理项目(四)

本文将引导开发者从零基础开始,运用、react、react-router、react-redux、Ant Design、less、tailwindcss、axios等前沿技术栈,构建一个高效、响应式的后台管理系统。通过详细的步骤和实践指导,文章旨在为开发者揭示如何利用这些技术工具,从项目构思到最终实现的全过程,提供清晰的开发思路和实用的技术应用技巧。使用vite+react+ts+Ant Design开发后台管理项目(一)使用vite+react+ts+Ant Design开发后台管理项目(二)

lbking666666的专栏 2006

让poi架起java与office之间的桥梁,让POI架起Java与Office之间的桥梁二

1/5/20083255五、通过eventusermodel读取文件通过eventusermodel读取文件要比使用usermodel复杂得多,但效率也要高不少,因为它要求应用程序一边读取数据,一边处理数据。eventusermodel实际上模拟了DOM环境下SAX处理XML文档的办法,应用程序首先要注册期望处理的数据,eventusermodel将在碰到匹配的数据结构时回调应用程序注册的方法。使...

weixin_36018119的博客 120

JW01二氧化碳传感器实战:5分钟搞定Arduino环境监测系统(附完整代码)

本文详细介绍了如何使用JW01二氧化碳传感器与Arduino快速搭建环境监测系统。通过简单的硬件连接和完整的代码示例,读者可以在5分钟内实现CO2浓度实时监测,并了解数据解析、常见问题解决及进阶应用扩展。JW01传感器的高精度和易用性使其成为创客和嵌入式开发者的理想选择。

kite3的博客 382

RT-DETR改进策略【Neck】| GFPN 超越BiFPN 通过跳层连接和跨尺度连接改进RT-DETR颈部网络

本文记录的是利用颈部结构优化RT-DETR的目标检测网络模型。利用改进后的颈部网络,通过跳层连接,避免了在进行反向传播时的梯度消失问题,并且引入跨尺度连接,可以实现不同级别和层次的特征充分融合,获取足够的高层语义信息和低层空间信息交换,从而在大规模变化场景下提高检测性能。GIRAFFEDET: A HEAVY-NECK PARADIGM FOR OBJECT DETECTION-GFPN包含了上述的跳层连接(dense-link和log2nlog _{2} nlog2​n-link)以及跨尺度连接(Quee

Limiiiing的博客 2228

java 操作excel框架_JavaPoi的使用操作excel的框架

POI是java用来操作windows文档的一个框架。通过HSSF可以用java来操作excel的读写。我记得我毕业的第一个项目就是用POI来做的。呵呵。下面是一个用poi读写excel的列子public class PoiTest {public static void main(String args[]){try {//readSheet();writeSheet();} catch (IO...

weixin_30198949的博客 501

跨应用服务器的自定义 IDoc 传输实战:以 CATSDB 工时为例,打通两套 SAP 系统的数据通道

本文介绍了在企业多SAP系统环境下,使用SAP ALE/IDoc技术实现工时数据跨系统传输的解决方案。文章从技术选型、系统架构到具体配置步骤进行了详细说明,重点阐述了IDoc/ALE在异步传输、全链路追踪和数据重放方面的优势。 文章详细讲解了端到端实施流程,包括Logical System配置、RFC Destination创建、Message Type定义、Segment和Basic Type设计等关键步骤。同时提供了出站封装的ABAP代码示例,强调调用MASTER_IDOC_DISTRIBUTE函数后执

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 172

POI快速入门教程 | HSSF,XSSF,SXSSF的区别

POI有三种API: POI-HSSF POI-XSSF SXSSF 官方文档的说法: HSSF是POI项目的Excel '97(-2007)文件格式的纯Java实现。XSSF是POI Project的Excel 2007 OOXML(.xlsx)文件格式的纯Java实现。 自3.8-beta3以来,POI提供了基于XSSF构建的低内存占用SXSSF API。 SXSSF是XSSF的AP...

直须看尽洛城花 1万+

【AI大模型应用开发】1.0 Prompt Engineering(提示词工程)- 典型构成、原则与技巧,代码中加入Prompt

Prompt典型构成、原则与技巧,以及OpenAI API重要参数解释,助你轻松入门Prompt

同学小张的博客 2580

YOLOv8-Pose 姿态识别 RK3588 实战:从模型训练到 RKNN 部署,精度与推理速度双提升

本教程从YOLOv8-pose模型的姿态识别训练,到RK3588的边缘量化部署,为你打造了一套“高精度+高实时性+低成本”的人体姿态分析解决方案。无论是健身动作纠正、智能安防行为检测,还是工业人员姿态监控,这套技术都能直接复用——你只需替换数据集与业务逻辑,即可快速落地专属的边缘AI姿态识别系统。如果你在实践中遇到任何卡点,欢迎随时交流。记住,人体姿态识别的价值在于“关键点准、推理快、部署易”,而这三者的平衡,正是你通过本教程能掌握的核心能力。

FJN110的博客 363

Java POI(第一讲):POI中HSSF用法大全

Java POI(第一讲):POI中HSSF用法大全 zangyanan20163人评论16128人阅读2016-08-12 11:38:23 在讲导入Excel功能之前,先拓展一下Excel与POI对应关系: 表关系 Excel POI Sheet1表 0表 Sheet2表 1表 Sheet3表 2表 依次类推 ...

sinat_28238111的博客 2765

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Jakata Poi HSSF:纯java的Excel解决方案总结

Jakata Poi HSSF:纯java的Excel解决方案总结 作者: jfish 发表日期: 2006-01-14 16:28 文章属性: 原创 复制链接 Jakata Poi HSSF:纯java的Excel解决方案总结1.背景Jaka

Gao Sping的专栏 4044

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

POI操作Excel详解,HSSF和XSSF两种方式

HSSF方式: package com.tools.poi.lesson1; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.text.ParseExcept

小李专栏 12万+

浅谈POI-HSSF、XSSF 、 SXSSF

问题描述1:使用HSSF向excel插入10w条数据,报错 使用HSSF创建的是.xls文件,该类型文件最大只能插入大概6w条数据。 问题描述2:为什么使用SXSSF和XSSF插入10w条数据,在性能上查那么多? 表现为:使用XSSF插入10w条数据。Java占用内存直接飙到10多G,而SXSSF占用的很小,而且效率也快。 为什么???这是什么思想??? ...

weixin_41622785的博客 1345

Java利用POI:HSSF、XSSF、SXSSF操作Excel

Java利用POI操作Excel POI提供了HSSF、XSSF以及SXSSF三种方式操作Excel。 其中: HSSF:Excel97-2003版本,扩展名为.xls。一个sheet最大行数65536,最大列数256。 XSSF:Excel2007版本开始,扩展名为.xlsx。一个sheet最大行数1048576,最大列数16384。 SXSSF:是在XSSF基础上,POI3.8版本开始提供的支持低内存占用的操作方式,扩展名为.xlsx。 SXSSF支持低内存占用的方式是,通过一个滑动窗口来限制访问Row

大数据开发、JAVA开发、人工智能AI 7137

xssf和hssf的区别java_apache POI 的 HSSF和XSSF

转自:http://blog.sina.com.cn/s/blog_717c2b0f0100wcef.html没工夫看先放着还有几个不错的:POI 是 Apache 下的 Jakata 项目的一个子项目,主要用于提供 java 操作 MicrosoftOffice 办公套件如 Excel,Word,Powerpoint 等文件的 API.微软的Office 办公软件在企业的日常办公中占据着重要的地...

weixin_29213525的博客 1173

POI使用HSSF,XSSF,SXSSF三种方式比较

POI提供了HSSF、XSSF以及SXSSF三种方式操作Excel。 HSSF:Excel97-2003版本,扩展名为.xls。一个sheet最大行数65536,最大列数256。 XSSF:Excel2007版本开始,扩展名为.xlsx。一个sheet最大行数1048576,最大列数16384。 SXSSF:是在XSSF基础上,POI3.8版本开始提供的支持低内存占用的操作方式,扩展名为.xlsx。 Excel版本兼容性是向下兼容。 三种类的接口及方法: HSSF:HSSFWorkbook、HSSFShee

sxqinjh的博客 3905

xssf和hssf的区别java_POI XSSF与HSSF的 使用区别

首次写博客,希望能坚持下去,一点一滴的积累,内容不多也不深,但愿我的分享,能帮助和我一样的新人们解决问题最近给项目中添加了一个导入excel表格的功能,然而在功能开发结束后测试,发现报错。报错信息如下:The supplied data appears to be in the Office 2007+ XML. You are calling the part of POI that deals...

weixin_36341500的博客 5411

Jakata Poi HSSF:纯java的Excel解决方案

微软在桌面系统上的成功,令我们不得不大量使用它的办公产品,如:Word,Excel。时至今日,它的源代码仍然不公开已封锁了我们的进一步应用和开发。然而在要求更高的服务器领域,微软本身的产品移植性不好,性能不佳。在我们实际的开发中,表现层的解决方案虽然有多样,但是IE浏览器已成为最多人使用的浏览器,因为大家都用Windows。在企业办公系统中,常常有客户这样子要求:你要把我们的报表直接用Excel打

2752

Jakata Poi HSSF:纯java的Excel解决方案 王敏

微软在桌面系统上的成功,令我们不得不大量使用它的办公产品,如:Word,Excel。时至今日,它的源代码仍然不公开已封锁了我们的进一步应用和开发。然而在要求更高的服务器领域,微软本身的产品移植性不好, 性能不佳。在我们实际的开发中,表现层的解决方案虽然有多样,但是Ie浏览器已成为最多人使用的浏览器,因为大家都用Windows。在企业办公系统中,常常有客户这样子要求:你要把我们的报表

1581

HSSF解析Excel,poi解析HSSF

HSSF 解析Excel97-2007格式(.xls) XSSF 解析Excel 2007格式(.xlsx) 基于maven坐标导入poi支持 poi..jar解析HSSF poi ooxml..jar 解析XSSF 1.导入jar包     Excel解析工具类          poi,poi-ooxml,poi-ooxml-schemas 2.批量导入区域数据     1_

zxm199666abg的博客 651

Day 33 POI-HSSF/XSSF

区别 POI提供了HSSF、XSSF以及SXSSF三种方式操作Excel。 HSSF:Excel97-2003版本,扩展名为.xls。一个sheet最大行数65536,最大列数256。 XSSF:Excel2007版本开始,扩展名为.xlsx。一个sheet最大行数1048576,最大列数16384。 SXSSF:是在XSSF基础上,POI3.8版本开始提供的支持低内存占用的操作方式,扩展名为....

fggsgnhz的博客 492
上一篇: 将C++ 看作多种语言的联合体
下一篇: 简单的学生管理系统
飞羽飞之猪
博客等级 码龄21年 127粉丝 85原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值