java读excel文件的例子

Java解析Excel文件 Aspose于2002年3月在澳大利亚悉尼创建,与Spire框架类似是一个更加成熟的以及老牌的收费java框架,Aspose以其强大的文件转换能力、丰富的文档处理功能、灵活的图像处理选项以及便捷的邮件处理功能,在多个领域得到了广泛应用。它以其独立性、广泛的支持性和高效的操作性能,赢得了众多开发者的青睐。在低代码产品的研发过程中,为用户提供数据导入导出的能力时,无法避免的就是对EXCEL解析的能力,所以本篇通过介绍部分开源框架以及收费框架的相关技术,来介绍低代码产品中与Excel解析相关的知识。 阅读详情
 

最近因为项目需要,写了一个java读excel文件的例子,里面有对日期和对公式的读取,开始的时候还真的费了不少的工夫呢,呵呵。后来知其然了之后,总算略有小成,姑且贴出来与大家共享。

不过目前还是有一个waring:就是读取merge型数据的时候报[WARNING] Unknown Ptg 2d (45) 不知谁有解决的办法,我先扔块砖,有玉的尽管砸过来就是了。

 

package com.zzxy.model;

import java.io.FileInputStream;

import java.io.FileOutputStream;

 

import java.text.DecimalFormat;

 

import java.util.Date;

import org.apache.poi.hssf.record.FormulaRecord;

import org.apache.poi.hssf.record.formula.AreaPtg;

import org.apache.poi.hssf.usermodel.HSSFCell;

import org.apache.poi.hssf.usermodel.HSSFCellStyle;

import org.apache.poi.hssf.usermodel.HSSFDateUtil;

import org.apache.poi.hssf.usermodel.HSSFRow;

import org.apache.poi.hssf.usermodel.HSSFSheet;

import org.apache.poi.hssf.usermodel.HSSFWorkbook;

//import org.apache.poi.hssf.usermodel.HSSFDataFormat;

import org.apache.poi.hssf.record.CalcCountRecord;

 

/**

 *

 * author

 *

 * java读取excel文件

 *

 * 一个Excel文件的层次:Excel文件->工作表->行->单元格 对应到POI中,为:workbook->sheet->row->cell

 * 

 */

public class POItest {

 

 public static String outputFile = "c://Temp//test.xls";

 

 public static String fileToBeRead = "c://Temp//test.xls";

 

 public void CreateExcel() {

  try {

   // 创建新的Excel 工作簿

   HSSFWorkbook workbook = new HSSFWorkbook();

   // 在Excel工作簿中建一工作表,其名为缺省值

   // 如要新建一名为"效益指标"的工作表,其语句为:

   // HSSFSheet sheet = workbook.createSheet("效益指标");

   HSSFSheet sheet = workbook.createSheet();

   // 在索引0的位置创建行(最顶端的行)

   HSSFRow row = sheet.createRow((short) 0);

   //在索引0的位置创建单元格(左上端)

   HSSFCell cell = row.createCell((short) 0);

   // 定义单元格为字符串类型

   cell.setCellType(HSSFCell.CELL_TYPE_STRING);

   // 在单元格中输入一些内容

   cell.setCellValue("sweater");

   // 新建一输出文件流

   FileOutputStream fOut = new FileOutputStream(outputFile);

   // 把相应的Excel 工作簿存盘

   workbook.write(fOut);

   fOut.flush();

   // 操作结束,关闭文件

   fOut.close();

   System.out.println("文件生成...");

 

  } catch (Exception e) {

   System.out.println("已运行 xlCreate() : " + e);

  }

 }

 

 /**

  * 读取excel,遍历各个小格获取其中信息,并判断其是否是手机号码,并对正确的手机号码进行显示

  *

  * 注意: 1.sheet, 以0开始,以workbook.getNumberOfSheets()-1结束

  *       2.row,以0开始(getFirstRowNum),以getLastRowNum结束

  *       3.cell,以0开始(getFirstCellNum),以getLastCellNum结束, 结束的数目不知什么原因与显示的长度不同,可能会偏长

  */

 public void readExcel() {

  //将被表示成1.3922433397E10的数转化为13922433397

  //DecimalFormat df = new DecimalFormat("#");

 

  try {

   // 创建对Excel工作簿文件的引用

   HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream(

     fileToBeRead));

//System.out.println("===SheetsNum===" + workbook.getNumberOfSheets());//获取sheet数

   for (int numSheets = 0; numSheets < workbook.getNumberOfSheets(); numSheets++) {

    if (null != workbook.getSheetAt(numSheets)) {

     HSSFSheet aSheet = workbook.getSheetAt(numSheets);//获得一个sheet

     if(!aSheet.isDisplayFormulas())//判断是显示aSheet中公式的值

         aSheet.setDisplayFormulas(true);

//System.out.println("+++getFirstRowNum+++" + aSheet.getFirstRowNum());

//System.out.println("+++getLastRowNum+++" + aSheet.getLastRowNum());

 

     for (int rowNumOfSheet = 0; rowNumOfSheet <= aSheet

       .getLastRowNum(); rowNumOfSheet++) {

      if (null != aSheet.getRow(rowNumOfSheet)) {

       HSSFRow aRow = aSheet.getRow(rowNumOfSheet);

 

//System.out.println(">>>getFirstCellNum<<<"+aRow.getFirstCellNum());

//System.out.println(">>>getLastCellNum<<<"+aRow.getLastCellNum());

       for (short cellNumOfRow = 0; cellNumOfRow <= aRow

         .getLastCellNum(); cellNumOfRow++) {

//System.out.println(">>>rowNumOfSheet<<<"+rowNumOfSheet);

//System.out.println(">>>cellNumOfRow<<<"+cellNumOfRow);

        if (null != aRow.getCell(cellNumOfRow)) {

         HSSFCell aCell = aRow.getCell(cellNumOfRow);

         int cellType = aCell.getCellType();

         switch (cellType) {

         case HSSFCell.CELL_TYPE_NUMERIC://Numeric

          String strCell =String.valueOf(aCell.getNumericCellValue()); 

         if(HSSFDateUtil.isCellDateFormatted(aCell))

          {

            //double sa = aCell.getNumericCellValue();

            //Date dd = HSSFDateUtil.getJavaDate(sa);

            //HSSFDataFormat tt = new HSSFDataFormat(workbook);

            //dd.toString();

System.out.println(aCell.getDateCellValue());

          }

        else

System.out.println(strCell); 

          break;

         case HSSFCell.CELL_TYPE_STRING://String

          strCell = aCell.getStringCellValue();

System.out.println(strCell);

         break;

         case HSSFCell.CELL_TYPE_FORMULA://formula

          //strCell =aCell.getCellFormula();

          strCell = String.valueOf(aCell.getNumericCellValue());

System.out.println(strCell);

         break;

         case HSSFCell.CELL_TYPE_BLANK://blank

          strCell = aCell.getStringCellValue();

System.out.println(strCell);

        break;

         default:

System.out.println("----------------格式读入不正确!");//其它格式的数据

         }

        }

 

       }

      }

 

     }

 

    }

System.out.println("//////////////////////////////sheet  end///////////////////////////////////////////");

   }

 

  } catch (Exception e) {

   System.out.println("ReadExcelError" + e);

  }

 

 }

 

 //阅读指定行和列的单元格的值,注意:行、列下标是从0开始的

  public void getSpecial(short numRow ,short numCol) {

  try {

   // 创建对Excel工作簿文件的引用

   HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream(fileToBeRead));

    if (null != workbook.getSheetAt(0)) {

     HSSFSheet aSheet = workbook.getSheetAt(0);//获得一个sheet

      if (null != aSheet.getRow(numRow)) {

       HSSFRow aRow = aSheet.getRow(numRow);

        if (null != aRow.getCell(numCol)) {

         HSSFCell aCell = aRow.getCell(numCol);

         int cellType = aCell.getCellType();

         switch (cellType) {

         case 0://Numeric

          String strCell =String.valueOf(aCell.getNumericCellValue());

         if(HSSFDateUtil.isCellDateFormatted(aCell))

System.out.println("00000000000000000"+aCell.getDateCellValue());

          else

System.out.println(strCell); 

          break;

         case 1://String

          strCell = aCell.getStringCellValue();

System.out.println("111111111111111111"+strCell);

         break;

         case 2://formula

          aSheet.setDisplayFormulas(true);

          strCell = String.valueOf(aCell.getNumericCellValue());

System.out.println("2222222222222222222"+strCell);

        break;

         case 3://blank

          strCell = aCell.getStringCellValue();

System.out.println("3333333333333333333"+strCell);

        break;

         default:

System.out.println("----------------格式读入不正确!");//其它格式的数据

         }

        }

      }

 

    }

 

 

  } catch (Exception e) {

   System.out.println("ReadExcelError" + e);

  }

 

 }

 

  public static void main(String[] args) {

  POItest poi = new POItest();

  //poi.CreateExcel();

  poi.readExcel();

  poi.getSpecial((short)4,(short)4);//第五行第五列的数据值

 }

}

java读加密excel,JAVA读取加密的Excel文件 在日常的项目中,经常碰到传输的Excel文件是加密的,数据入库时需要先逐个文件删除密码,操作复杂,还很不安全,可以在项目中结果使用Java读取带密码的Excel,操作如下:1、pom中导入poi依赖org.apache.poipoi3.14org.apache.poipoi-ooxml3.14org.apache.poipoi-ooxml-schemas3.14org.dom4jdom4j2.1.... 阅读详情

相关推荐

Java读取Excel文件,导出Excel文件

Java读取excel文件,并过滤空行,且读取多个工作表。

qi341500的博客 8548

2004年11月11日

最近因为项目需要,写了一个java读excel文件的例子,里面有对日期和对公式的读取,开始的时候还真的费了不少的工夫呢,呵呵。后来知其然了之后,总算略有小成,姑且贴出来与大家共享。不过目前还是有一个waring:就是读取merge型数据的时候报[WARNING] Unknown Ptg 2d (45) 不知谁有解决的办法,我先扔块砖,有玉的尽管砸过来就是了。 package com.z

心窗月影 1469

poi_API,java处理excel

poi_API,java处理excel

warning: unknown attribute ‘at‘ ignored [-Wunknown-attributes] keil报错处理

KEIL 报错处理

sunny的博客 7298

SquareLine Studio汉化版安装激活全攻略:LVGL嵌入式UI设计从入门到出代码

嵌入式GUI开发中,LVGL作为轻量级开源图形库,广泛应用于STM32、ESP32等MCU平台。可视化设计器通过拖拽生成LVGL代码,大幅提升UI开发效率。SquareLine Studio正是这类工具的代表,支持界面设计、事件绑定与代码导出。其安装、汉化与激活是初学者常见门槛,尤其涉及LVGL版本匹配、字体配置及FreeRTOS移植等关键环节。本文围绕汉化版安装、一个月免费激活码使用及最小可用流程展开,帮助开发者快速上手LVGL界面设计,规避常见环境与集成问题。

weixin_29189987的博客 416

Squareline Studio + LVGL实战:从Figma设计到MCU屏幕的UI开发一条龙(避坑中文显示)

本文详细介绍了使用Squareline Studio和LVGL实现从Figma设计到MCU屏幕UI开发的全流程,重点解决中文显示等常见问题。通过设计工具链搭建、设计稿转换、LVGL工程集成及性能优化等步骤,帮助开发者高效完成嵌入式GUI开发,提升开发效率。

weixin_29246195的博客 584

Warning: Unknown: failed to open stream: No such file or directory in Unknown on line 0

apache不能解析含中文路径的url

qq_38709972的博客 7264

MATLAB新手必看:SVPWM七段式算法仿真全流程解析(附完整代码)

本文为MATLAB新手和电机控制初学者提供了SVPWM七段式算法的完整仿真与代码实现指南。文章详细解析了从扇区判断、矢量作用时间计算到PWM波形生成的全流程,并附带了可直接运行的MATLAB代码,帮助读者在理解FOC控制核心算法的基础上,快速掌握工程仿真与调试技巧。

weixin_29074295的博客 281

poi读取excel内容(公式)

用poi读取excel的示例网上好像很多了,但却鲜有涉及excel中的公式结果,用到了,记录下 公式类型的数据可以读取计算结果,而不是公式本身,已经测试OK import java.io.FileInputStream; import java.io.InputStream; import java.text.SimpleDateFormat; import java.util.ArrayL

thewolfish的专栏 5176

【AIGC】人工智能训练师(高级)考试题库-橙点同学

例如,在嘈杂的环境中进行声音转文字,即使是优秀的模型也可能会出现一些错误,但这并不意味着该模型本身质量差,在其他较为理想的环境下,它可能会有很好的表现。例如,在一些语音应用和系统中,会使用SSML来实现对语音合成的精细控制,如调整语速、语调、音量等,而这些应用和系统的开发往往会遵循W3C的相关标准和框架,其中就包括SSML这一语音合成标记语言。例如,在语音识别等场景中,像“去火车站怎么走”这样的语音指令,没有其他嘈杂的背景声音或模糊不清的表述,就属于无噪音的数据,有利于系统准确地进行处理和分析。

RisunJan的博客 9921

国产系统迁移实战:在银河麒麟V10上搞定Wine32位支持,让老Windows软件跑起来

本文详细介绍了在银河麒麟V10操作系统上构建Wine32位支持的全过程,帮助用户解决Windows应用迁移难题。从系统架构差异分析到Wine环境配置,再到实战应用部署与优化,提供了一套完整的解决方案,确保老Windows软件在国产系统上稳定运行。

weixin_32288959的博客 649

Java使用poi将office文件转为html

一、前言 功能需求:上传office文档,并提供文件在线预览。 解决方案: 使用Aspose.cells.jar包,将文档转换为pdf格式; 使用libreOffice,将文档转换为pdf格式; 使用poi将文档转换为html格式。 方案一:通过Aspose的方式,该功能是付费版,需要破解,所以是能抛弃。 方案二,使用libreOffice,需要安装使用libreOffice,linux还需要装unoconv,需要使用commons-io的pom依赖,之前maven官方库查询不到这个pom依赖所以放弃

weixin_41377777的博客 1497

题解:AcWing 6051 看病

等知名刷题平台精心挑选而来,并结合各平台提供的算法标签和难度等级进行了系统分类。题目涵盖了从基础到进阶的多种算法和数据结构,旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。但医院的排队不同其他排队,因为多数情况下,需要病情严重的人优先看病,所以希望BSNY设计系统时,以病情的严重情况作为优先级,判断接下来谁可以去看病。具体是这样的,最近来医院看病的人越来越多了,因此很多人要排队,只有当空闲时放一批病人看病。的操作,输出此时还在排队人中,优先级最大的患者姓名和优先级。后面没有输入,但需要你输出。

团爸讲算法 589

poi,java读excel文件中数据 例子

package sample2; import java.io.BufferedReader;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.util.Date

Steve_wang_victor的专栏 1558

[Unity3D]水族馆游戏教程四

文章目录0.接上篇1.速度控制器2.修改FishAI3.修改后的效果4.总结 0.接上篇 上一篇,实现了鱼AI的随机游动、自动转向,并且学习了如何分析调试过程中遇到的报错。 本篇将继续优化鱼AI。 1.速度控制器 上一篇虽然实现了鱼的随机游动,但是可以看到,鱼在转向的时候,会显得很突然。因此先要解决这个问题。 我们的思路是,让鱼在刚转向的时候,速度由慢到快,等到游动到快要到达目标点的时候,速度减慢...

延澈左的专栏 1039

2026保姆级:1小时搞定C# OPC UA客户端开发——PLC与上位机全量数据交互零基础教程

本文介绍了使用C#开发OPC UA客户端的核心流程和关键代码实现。文章首先指出工业上位机开发中OPC UA的重要性,并针对新手常见问题提出了1小时掌握核心功能的解决方案。重点内容包括:选择官方.NET Standard库的优势、5分钟搭建开发环境的步骤、OPC UA客户端架构与通信流程的图解说明,以及完整的客户端基础类代码实现,涵盖了连接管理、证书配置、安全认证等关键功能。通过本文提供的代码模板,开发者可快速实现与PLC等工业设备的稳定数据交互。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 799

简单使用easyExcel实现对excel读和写操作

1.引入依赖 easyexcel底层封装了poi所以必须引入poi而且版本需要进行对应如下: <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.1.7</version> </dependen

wyr1235的博客 1106

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

java:EasyExcel使用(一)读excel

EasyExcel相比于传统使用poi进行excel文件读写,编程使用操作上更加方便快捷,且对于内存溢出进行了优化处理。本文是EasyExcel读excel操作。

a232884c的博客 6073

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

java读csv 和excel

以前各种包都用过,操作了无数csv 和excel。 从来没有记录过。下面写了个简单例子,不过对于excel还是建议使用poi来操作。我没有封装,只是事例而已。   import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; import java.nio.charset.Chars

it_man的专栏 9739

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Java使用jxl读Excel简单例子

Java通过jxl读Excel,唯一前提:引入jxl.jar包。 package com.neusoft.excel; import java.io.File; import jxl.Sheet; import jxl.Workbook; import jxl.write.Label; import jxl.write.WritableSheet; import jxl.write.Wr...

ww305456036的博客 246

Java读Excel文件

如果用XSSFWorkbook 来读取excel,遇到文件太大时候,会导致oom,  OutOfMemoryError: Java heap space 所以apache官网上有推荐  If memory footprint is an issue, then for XSSF, you can get at the underlying XML data, and process it yo

急速虫子 1203

java生成Excel文件

添加依赖 <!-- 使用 xls 格式 --> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.14</version> </dependency> <!-- 使用 xlsx 格式 --> <dependency> .

weixin_42236797的博客 2万+

Java读、写、修改Excel文件

 Java读、写、修改Excel文件 点击88DOC.COM查找更多文档Java Excel是一开放源码项目,通过它Java开发人员可以读取Excel文件的内容、创建新的Excel文件、更新已经存在的Excel文件。使用该API非Windows操作系统也可以通过纯Java应用来处理Excel数据表。因为是使用Java编写的,所以我们在Web应用中可以通过JSP、Servlet来调用API实现对

huangzf0048的专栏 2132

Java读、写、存Excel文件

目前读写Excel比较流行的java开源库主要是两个,一个是poi,一个是javaExcel(jxl)。 POI为apache公司的一个子项目,主要是提供一组操作windows文档的Java API. JavaExcel俗称jxl是一开放源码项目,通过它Java开发人员可以读取Excel文件的内容、创建新的Excel文件、更新已经存在的Excel文件。使用该API非Windows操作系统也可以通...

MagicMHD的博客 600

JAVA生成EXCEL文件

使用JXL2_5_9包创建EXCEL文件:public void createXLS() {  try  {   //打开文件   WritableWorkbook book=   Workbook.createWorkbook(new File("JAVA生成EXCEL测试.xls"));      //生成名为"第一页"的工作表,参数0表示这是第一页   WritableSheet s

南国浪子 的专栏 5341

Java读Excel的方法

在最近的一个项目中用户要求把原来的历史数据导入到新的系统中,我们用Java为用户开发的系统,用户提供的数据格式为Excel文件。于是, 我想到了使用apache的POI,因为以前使用过,觉得还可以,先做了个测试,感觉没什么问题,但是在导入另外一个文件时出错了,系统捕获一个javaCastException.引发这一异常的原因是由于java.util.TreeMap进行类型比较时出现的错误,由于

不经历风雨怎么见彩虹 1793
上一篇: Oracle和SQL Server在配置连接池时的区别:
下一篇: 迁移到 Eclipse: Eclipse 对 JBuilder 评估开发指南
Explorerwen
博客等级 码龄23年 4粉丝 41原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值