【在线教育】POI入门

简介: POI入门

3.POI入门(了解)


3.1 POI 概述


3.1.1 简介


Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能。

image.png

3.1.2 官网


Apache POI - the Java API for Microsoft Documents

3.2 入门案例


3.2.1 环境搭建


创建项目:修改pom<dependencies><!--xls--><dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>3.9</version></dependency><!--xlsx--><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>3.9</version></dependency><!--日期格式化工具--><dependency><groupId>joda-time</groupId><artifactId>joda-time</artifactId><version>2.10.1</version></dependency><!--test--><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version></dependency></dependencies>

3.2.2 xls文件写操作


  • excel2003 文件扩展名为 xls
  • 名词:
  • 工作簿:一个excel文件,就是一个工作簿
  • 工作表:一个工作簿中,可以所有多个工作表Sheet
  • 行:每一个工作表,包含多行row
  • 单元格:每行有多个单元格Cell组成。
packagecom.zx.poi;
importorg.apache.poi.hssf.usermodel.HSSFWorkbook;
importorg.apache.poi.ss.usermodel.Cell;
importorg.apache.poi.ss.usermodel.Row;
importorg.apache.poi.ss.usermodel.Sheet;
importorg.apache.poi.ss.usermodel.Workbook;
importorg.joda.time.DateTime;
importorg.junit.Test;
importjava.io.FileOutputStream;
importjava.io.IOException;
publicclassExcel03Test {
@TestpublicvoidtestWrite03() throwsIOException {
// 创建新的Excel 工作簿Workbookworkbook=newHSSFWorkbook();
// 在Excel工作簿中建一工作表,其名为缺省值 Sheet0//Sheet sheet = workbook.createSheet();// 如要新建一名为"信息统计"的工作表,其语句为:Sheetsheet=workbook.createSheet("信息统计");
// 创建行(row 1)Rowrow1=sheet.createRow(0);
// 创建单元格(col 1-1)Cellcell11=row1.createCell(0);
cell11.setCellValue("今日人数");
// 创建单元格(col 1-2)Cellcell12=row1.createCell(1);
cell12.setCellValue(666);
// 创建行(row 2)Rowrow2=sheet.createRow(1);
// 创建单元格(col 2-1)Cellcell21=row2.createCell(0);
cell21.setCellValue("统计时间");
//创建单元格(第三列)Cellcell22=row2.createCell(1);
StringdateTime=newDateTime().toString("yyyy-MM-dd HH:mm:ss");
cell22.setCellValue(dateTime);
// 新建一输出文件流(注意:要先创建文件夹)FileOutputStreamout=newFileOutputStream("d://zx/a.xls");
// 把相应的Excel 工作簿存盘workbook.write(out);
// 操作结束,关闭文件out.close();
System.out.println("文件生成成功");
    }
}

3.2.3 xlsx 文件写操作


excel2007+ 文件扩展名为 xlsx

packagecom.zx.poi;
importorg.apache.poi.hssf.usermodel.HSSFWorkbook;
importorg.apache.poi.ss.usermodel.Cell;
importorg.apache.poi.ss.usermodel.Row;
importorg.apache.poi.ss.usermodel.Sheet;
importorg.apache.poi.ss.usermodel.Workbook;
importorg.apache.poi.xssf.usermodel.XSSFWorkbook;
importorg.joda.time.DateTime;
importorg.junit.Test;
importjava.io.FileOutputStream;
importjava.io.IOException;
publicclassExcel07Test {
@TestpublicvoidtestWrite07() throwsIOException {
// 创建新的Excel 工作簿Workbookworkbook=newXSSFWorkbook();
// 在Excel工作簿中建一工作表,其名为缺省值 Sheet0//Sheet sheet = workbook.createSheet();// 如要新建一名为"信息统计"的工作表,其语句为:Sheetsheet=workbook.createSheet("信息统计");
// 创建行(row 1)Rowrow1=sheet.createRow(0);
// 创建单元格(col 1-1)Cellcell11=row1.createCell(0);
cell11.setCellValue("今日人数");
// 创建单元格(col 1-2)Cellcell12=row1.createCell(1);
cell12.setCellValue(666);
// 创建行(row 2)Rowrow2=sheet.createRow(1);
// 创建单元格(col 2-1)Cellcell21=row2.createCell(0);
cell21.setCellValue("统计时间");
//创建单元格(第三列)Cellcell22=row2.createCell(1);
StringdateTime=newDateTime().toString("yyyy-MM-dd HH:mm:ss");
cell22.setCellValue(dateTime);
// 新建一输出文件流(注意:要先创建文件夹)FileOutputStreamout=newFileOutputStream("d://zx/b.xlsx");
// 把相应的Excel 工作簿存盘workbook.write(out);
// 操作结束,关闭文件out.close();
System.out.println("文件生成成功");
    }
}

3.2.4 xls 文件读操作


// xls 2003 文件读操作@TestpublicvoidtestXlsRead() throwsException {
//1 确定文件流FileInputStreamis=newFileInputStream("D:\\xml\\user.xls");
//2 开始读// 2.1 工作簿HSSFWorkbookworkbook=newHSSFWorkbook(is);
// 2.2 工作表HSSFSheetsheet=workbook.getSheet("用户表");
introwStart=sheet.getFirstRowNum();      //第一行索引号(从0开始)introwEnd=sheet.getLastRowNum();         //最后一行的索引号(从0开始)// 2.3 行for(inti=rowStart ; i<=rowEnd ; i++) {
HSSFRowrow=sheet.getRow(i);
intcellStart=row.getFirstCellNum();      //第一列的索引号(从0开始)intcellEnd=row.getLastCellNum() ;        //最后一列的编号(从1开始)// 2.4 列for(intc=cellStart; c<cellEnd ; c++) {
HSSFCellcell=row.getCell(c);
//                System.out.println(cell.getCellType());if(cell.getCellType() ==Cell.CELL_TYPE_STRING) {
// 字符串System.out.print(row.getCell(c).getStringCellValue() +", ");
                }
if(cell.getCellType() ==Cell.CELL_TYPE_NUMERIC) {
// 字符串System.out.print(row.getCell(c).getNumericCellValue() +", ");
                }
            }
System.out.println();
        }
// 3 释放资源is.close();
    }

3.2.5 xlsx 文件读操作


// xlsx 2007 文件读操作@TestpublicvoidtestXlsxRead() throwsException {
//1 确定文件流FileInputStreamis=newFileInputStream("D:\\xml\\user.xlsx");
//2 开始读// 2.1 工作簿Workbookworkbook=newXSSFWorkbook(is);
// 2.2 工作表Sheetsheet=workbook.getSheet("用户表");
introwStart=sheet.getFirstRowNum();      //第一行索引号(从0开始)introwEnd=sheet.getLastRowNum();         //最后一行的索引号(从0开始)// 2.3 行for(inti=rowStart ; i<=rowEnd ; i++) {
Rowrow=sheet.getRow(i);
intcellStart=row.getFirstCellNum();      //第一列的索引号(从0开始)intcellEnd=row.getLastCellNum() ;        //最后一列的编号(从1开始)// 2.4 列for(intc=cellStart; c<cellEnd ; c++) {
Cellcell=row.getCell(c);
//                System.out.println(cell.getCellType());if(cell.getCellType() ==Cell.CELL_TYPE_STRING) {
// 字符串System.out.print(row.getCell(c).getStringCellValue() +", ");
                }
if(cell.getCellType() ==Cell.CELL_TYPE_NUMERIC) {
// 字符串System.out.print(row.getCell(c).getNumericCellValue() +", ");
                }
            }
System.out.println();
        }
// 3 释放资源is.close();
    }

3.2.6 读取不同类型的数据


@TestpublicvoidtestRead07() throwsException{
InputStreamis=newFileInputStream("d:/0704.xlsx");
Workbookworkbook=newXSSFWorkbook(is);
Sheetsheet=workbook.getSheetAt(0);
// 读取第一行第一列Rowrow=sheet.getRow(0);
Cellcell1=row.getCell(0);
Cellcell2=row.getCell(1);
// 输出单元内容System.out.println(cell1.getStringCellValue());
System.out.println(cell2.getNumericCellValue());
// 操作结束,关闭文件is.close();
}
相关文章
|
6月前
|
JavaScript Java 关系型数据库
在线视频教育平台|基于Springboot的在线视频教育平台系统设计与实现(源码+数据库+文档)
在线视频教育平台|基于Springboot的在线视频教育平台系统设计与实现(源码+数据库+文档)
122 0
|
6月前
|
存储 物联网 大数据
Java+BS +saas云HIS系统源码SpringBoot+itext + POI + ureport2数字化医院系统源码
医院云HIS系统是一种运用云计算、大数据、物联网等新兴信息技术的业务和技术平台。它按照现代医疗卫生管理要求,在特定区域内以数字化形式收集、存储、传递和处理医疗卫生行业的数据。通过云HIS系统,可以实现区域内医疗卫生信息资源的集中统管、统一调配、按需服务,为居民、医疗机构、卫生管理机关和其他机构提供云服务。
82 1
|
6月前
|
搜索推荐 Java 数据库
基于springboot家乡特色推荐系统
基于springboot家乡特色推荐系统
|
SQL 分布式计算 资源调度
干货 | Apache Flink 入门技术分享 PPT(多图预警)1
干货 | Apache Flink 入门技术分享 PPT(多图预警)1
1427 0
干货 | Apache Flink 入门技术分享 PPT(多图预警)1
|
Java API Apache
|
前端开发 JavaScript easyexcel
谷粒学院(九)EasyExcel | 课程分类模块(下)
谷粒学院(九)EasyExcel | 课程分类模块
谷粒学院(九)EasyExcel | 课程分类模块(下)
|
前端开发 Java 应用服务中间件
基于SSM框架的学生在线教育教学课程管理系统
基于SSM框架的学生在线教育教学课程管理系统
176 0
基于SSM框架的学生在线教育教学课程管理系统
|
SQL 算法 数据库
MybatisPlus学习笔记及资源分享(二)
MybatisPlus学习笔记及资源分享(二)
144 0
MybatisPlus学习笔记及资源分享(二)
|
easyexcel Java Apache
|
缓存 easyexcel 数据库