最近搜索

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

浏览:1188
管理员 2022-05-06 07:29


1

一 :简介

开发中经常会设计到excel的处理,如导出Excel,导入Excel到数据库中,操作Excel目前有两个框架,一个是apache 的poi, 另一个是 Java Excel


二:Apache POI常用的类


Apache POI常用的类

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

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


常用的类和方法

HSSFWorkbook :工作簿,代表一个excel的整个文档

HSSFWorkbook(); // 创建一个新的工作簿

HSSFWorkbook(InputStream inputStream); // 创建一个关联输入流的工作簿

HSSFSheet createSheet(String sheetname); 创建一个新的Sheet

HSSFSheet getSheet(String sheetName); 通过名称获取Sheet

HSSFSheet getSheetAt(int index); // 通过索引获取Sheet,索引从0开始

HSSFCellStyle createCellStyle(); 创建单元格样式

int getNumberOfSheets(); 获取sheet的个数

setActiveSheet(int index); 设置默认选中的工作表

write();

HSSFSheet:表

HSSFRow createRow(int rownum); 创建新行,需要指定行号,行号从0开始

HSSFRow getRow(int index); 根据索引获取指定的行

int addMergedRegion(CellRangeAddress region); 合并单元格

CellRangeAddress(int firstRow, int lastRow, int firstCol, int lastCol); 单元格范围, 用于合并单元格,需要指定要合并的首行、最后一行、首列、最后一列。

autoSizeColumn(int column); 自动调整列的宽度来适应内容

getLastRowNum(); 获取最后的行的索引,没有行或者只有一行的时候返回0

setColumnWidth(int columnIndex, int width); 设置某一列的宽度,width=字符个数 * 256,例如20个字符的宽度就是20 * 256

HSSFRow :行

HSSFCell createCell(int column); 创建新的单元格

HSSFCell setCell(shot index);

HSSFCell getCell(shot index);

setRowStyle(HSSFCellStyle style); 设置行样式

short getLastCellNum(); 获取最后的单元格号,如果单元格有第一个开始算,lastCellNum就是列的个数

setHeightInPoints(float height); 设置行的高度

HSSFCell:单元格

setCellValue(String value); 设置单元格的值

setCellType(); 设置单元格类型,如 字符串、数字、布尔等

setCellStyle(); 设置单元格样式

String getStringCellValue(); 获取单元格中的字符串值

setCellStyle(HSSFCellStyle style); 设置单元格样式,例如字体、加粗、格式化

setCellFormula(String formula); 设置计算公式,计算的结果作为单元格的值,也提供了异常常用的函数,如求和"sum(A1,C1)"、日期函数、字符串相关函数、CountIf和SumIf函数、随机数函数等

HSSFCellStyle :单元格样式

setFont(Font font); 为单元格设置字体样式

setAlignment(HorizontalAlignment align); // 设置水平对齐方式

setVerticalAlignment(VerticalAlignment align); // 设置垂直对齐方式

setFillPattern(FillPatternType fp);

setFillForegroundColor(short bg); 设置前景色

setFillBackgroundColor(short bg); 设置背景颜色

HSSFFont:字体,

setColor(short color); // 设置字体颜色

setBold(boolean bold); // 设置是否粗体

setItalic(boolean italic); 设置倾斜

setUnderline(byte underline); 设置下划线

HSSFName:名称

HSSFDataFormat :日期格式化

HSSFHeader : Sheet的头部

HSSFFooter :Sheet的尾部

HSSFDateUtil :日期工具

HSSFPrintSetup :打印设置

HSSFErrorConstants:错误信息表


三:基础示例


POI 03版本 XLS

Pom.xml 引入包


    <dependency>

       <groupId>org.apache.poi</groupId>

        <artifactId>poi</artifactId>

        <version>3.14</version>

    </dependency>

1

2

3

4

5

    <dependency>

        <groupId>joda-time</groupId>

        <artifactId>joda-time</artifactId>

        <version>2.10.8</version>

    </dependency>

    <!--    test    -->

    <dependency>

        <groupId>org.junit.jupiter</groupId>

        <artifactId>junit-jupiter</artifactId>

        <version>RELEASE</version>

        <scope>compile</scope>

    </dependency>

1

2

3

4

5

6

7

8

9

10

11

12

创建一个测试类ExcelTest.class

image.png


Excel 文件创建路径为PATH+信息簿1.xls


POI 07版本 XLSX

Pom.xml 引入包


org.apache.poi poi-ooxml 3.14

//1.创建一个工作簿

//03版本的为XLS后缀,07为XLSX后缀,将创建工作簿new HSSFWorkbook(); 改为new XSSFWorkbook();即可

示例:65534行9列 内容猪猪侠

image.png



XLS后缀的Excel表格有35535行XLSX后缀的理论生可无限

以上的创建方法写入速度XLS比XLSX快的多

XSSFWorkbook()有一个升级方法为SXSSFWorkbook() 运行速度比原始方法快很多


Xls版本 xlsx的改把该把就是了

image.png


4.判断单元格类型


2020121217473783.png




联系站长

站长微信:xiaomao0055

站长QQ:14496453