POI:对Excel的基本读操作 整理2

1 简单读取操作

public class ExcelRead {String PATH = "D:\\Idea-projects\\POI\\POI_projects";// 读取的一系列方法// ......
}

因为07版本和03版本操作流程大差不差,所以这边就以03版本为例

    @Testpublic void testRead03() throws IOException {//获取文件流FileInputStream fileInputStream = new FileInputStream(PATH + "xiexu03.xls");//1.创建一个工作簿,获取到文件中的内容Workbook workbook = new HSSFWorkbook(fileInputStream);// 2.得到表,获取具体位置的内容Sheet sheet = workbook.getSheetAt(0);// 3.得到行Row row = sheet.getRow(0);// 4.得到列Cell cell = row.getCell(1);// System.out.println(cell.getStringCellValue());  // 得到单元格中的字符串内容System.out.println(cell.getNumericCellValue());   // 得到单元格中的数字内容fileInputStream.close();}

 


 


2 分类型读取数据

读取下列含有不同数据类型的Excel表格,并输出读取的数据


 

    @Testpublic void testCellType() throws IOException {//获取文件流FileInputStream fileInputStream = new FileInputStream("D:\\Idea-projects\\POI\\明细表.xls");//1.创建一个工作簿Workbook workbook = new HSSFWorkbook(fileInputStream);Sheet sheet = workbook.getSheetAt(0);// 2. 获取标题内容Row rowTitle = sheet.getRow(0);if (rowTitle != null) {// 这种写法一定要掌握int cellCount = rowTitle.getPhysicalNumberOfCells();   // 读取所有有数据的单元格数量for (int cellNum = 0; cellNum < cellCount; cellNum++) {Cell cell = rowTitle.getCell(cellNum);if (cell != null) {CellType cellType = cell.getCellType();String cellValue = cell.getStringCellValue();System.out.print(cellValue + " | ");}}System.out.println();}// 获取表中的内容int rowCount = sheet.getPhysicalNumberOfRows();   // 获取所有含有数据的行的数量for (int rowNum = 1; rowNum < rowCount; rowNum++) {Row rowData = sheet.getRow(rowNum);if (rowData != null) {// 读取行中的列int cellCount = rowTitle.getPhysicalNumberOfCells();for (int cellNum = 0; cellNum < cellCount; cellNum++) {System.out.print("[" + (rowNum + 1) + "-" + (cellNum + 1) + "]");Cell cell = rowData.getCell(cellNum);// 匹配列的数据类型if ( cell != null) {CellType cellType = cell.getCellType();String cellValue = "";switch (cell.getCellType()) {case STRING:System.out.println("字符串");cellValue = cell.getStringCellValue();break;case BLANK:System.out.println("空");break;case BOOLEAN:System.out.println("布尔");cellValue = String.valueOf(cell.getBooleanCellValue());break;case NUMERIC:System.out.println("数字");   // 分为日期和普通数字if (DateUtil.isCellDateFormatted(cell)) {System.out.println("日期");Date date = cell.getDateCellValue();DateTime time = new DateTime(date);cellValue = time.toString("yyyy-MM-dd");} else{//   普通数字  -> 转换为字符串输出System.out.println("转换为字符串输出");cell.setCellType(CellType.STRING);  // 需要设置类型为字符串cellValue = cell.toString();}break;case ERROR:System.out.println("数据类型错误");break;}System.out.println(cellValue);}}}}fileInputStream.close();}

 




3 读取公式


 @Testpublic void  testReadCalculate() throws IOException {   // 公式//获取文件流FileInputStream fileInputStream = new FileInputStream("D:\\Idea-projects\\POI\\公式.xls");//1.创建一个工作簿Workbook workbook = new HSSFWorkbook(fileInputStream);// 2.得到表Sheet sheet = workbook.getSheetAt(0);// 3.得到行Row row = sheet.getRow(4);// 4.得到列Cell cell = row.getCell(0);// 拿到计算公式FormulaEvaluator formulaEvaluator = new HSSFFormulaEvaluator((HSSFWorkbook) workbook);// 输出单元格的内容CellType cellType = cell.getCellType();switch (cell.getCellType()) {case FORMULA:System.out.println("公式");String formula = cell.getCellFormula();   // 获取计算公式System.out.println(formula);// 计算CellValue evaluate = formulaEvaluator.evaluate(cell);String cellValue = evaluate.formatAsString();   // 将计算结果格式化为字符串// 输出System.out.println(cellValue);break;}fileInputStream.close();}


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/345413.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

element+vue 之图片放大器

1.安装插件 npm install vue-photo-zoom-pro2.main.js导入 // 放大镜 import VuePhotoZoomPro from vue-photo-zoom-pro Vue.use(VuePhotoZoomPro)3.页面使用 <vue-photo-zoom-pro:url"imgUrl":out-zoomer"true":scale"2"style"width:…

CST2024的License服务成功启动,仍报错——“The desired daemon is down...”,适用于任何版本!基础设置遗漏!

CST2024的License服务成功启动&#xff0c;仍报错——“The desired daemon is down…”&#xff0c;适用于任何版本&#xff01;基础设置遗漏&#xff01; CST2024的License服务成功启动后报错 若不能成功启动License服务&#xff0c;有可能是你的计算机名称带中文&#xff…

【嵌入式——QT】QT静态编译

【嵌入式——QT】QT静态编译 QT下载查看文档下载Visual Studio打开命令行模式编译添加QT到Qt Creator编译示例 QT下载 下载地址 进入目录&#xff0c;我这里选择的qt-everywhere-src-5.14.1.zip。 查看文档 解压压缩包打开源码&#xff0c;查看README文件&#xff0c;里面…

【期末不挂科-C++考前速过系列P1】大二C++第1次过程考核(3道简述题&7道代码题)【解析,注释】

前言 大家好吖&#xff0c;欢迎来到 YY 滴C复习系列 &#xff0c;热烈欢迎&#xff01; 本章主要内容面向接触过C的老铁 主要内容含&#xff1a; 欢迎订阅 YY滴C专栏&#xff01;更多干货持续更新&#xff01;以下是传送门&#xff01; YY的《C》专栏YY的《C11》专栏YY的《Lin…

公司官网,选全站定制还是模板建站?

最近更新了公司网站&#xff0c;总算了了一件大事。 虽然很久以前也做网站&#xff0c;但随着技术的发展&#xff0c;以前经常用的dreamwaver、table等形式&#xff0c;不知道被升级了多少代。现在前端同事说起的各种架构&#xff0c;对我来说是云里雾里。只能看懂一点点。 这…

操作系统-操作系统的特征(并发 共享 虚拟 异步 之间关系)

文章目录 总览操作系统的特征-并发操作系统的特征-共享并发和共享的关系操作系统的特征-虚拟操作系统的特征-异步小结 总览 操作系统的特征-并发 并行&#xff1a;同时做多个事件 并发&#xff1a;同一个时刻只有一个事件&#xff0c;但会切换事件&#xff0c;所以宏观上可能做…

VASP结合vaspkit+ShengBTE计算热电优值(一)

电导率σ&#xff0c;塞贝克系数S的计算&#xff1a; 使用vaspkit计算处对应的物理量&#xff0c;具体流程为&#xff1a; 准备好计算的材料对应的POSCAR。如果是二维材料可以使用vaspkit 的921或923功能对二维材料POSCAR进行标准化。进行结构优化。使用 vaspkit-681命令生成高…

仿真验证方法(3)——物理验证

目录 一、物理验证的分类 二、DRC 2.1 设计规则 2.2 规则示例 2.3 线宽违例 2.4 间距违例 2.5 交叠违例 三、金属覆盖图形密度检查 四、天线比率检查 4.1 起因 4.2 计算 4.3 改进 五、LVS检查 六、物理验证常用的EDA工具 七、总结 一、物理验证的分类 对于物理验…

NULL是什么?

NULL是一个编程术语&#xff0c;通常用于表示一个空值或无效值。在很多编程语言中&#xff0c;NULL用于表示一个变量或指针不引用任何有效的对象或内存位置。 NULL可以看作是一个特殊的值&#xff0c;表示缺少有效的数据或引用。当一个变量被赋予NULL值时&#xff0c;它表示该变…

PHP在线文档管理系统源码

PHP在线文档管理系统源码 系统功能与介绍 在数据持续、快速增长背景下&#xff0c;企业面临海量非结构化数据处理需求&#xff0c;企业现有架构 通常无法应对海量非结构化数据的管理与应用。 支持私有化部署&#xff0c;完全内网环境下也可正常使用。 Windows、Linux、Mac等全平…

flutter 打包安卓apk 常用配置

打包之前需要先不配置不然会报错 Execution failed for task ‘:app:mergeReleaseResources’. APP目录下的build.gradleaaptOptions.cruncherEnabled falseaaptOptions.useNewCruncher false如图 配置targetSdkVersion 、minSdkVersion 在android/app/src目录下的build.…

微信商家转账到零钱,既能单笔又能批量,支持多商户管理

大家好&#xff0c;我是小悟 微信商家转账到零钱的功能大家应该都熟悉吧&#xff0c;为了满足商家向用户微信零钱转账的需求&#xff0c;微信支付推出【商家转账到零钱】服务&#xff0c;方便商户可以一次向单个或多个用户的微信零钱转账。 商家转账到零钱为商户提供了简便、…