poi读取excel

使用poi读取excel数据 为什么使用poi不用jxl, poi的功能更加的强大,效率更高,支持函数,支持字体、数字、日期操作(虽然我没用到,哈哈) pom <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.15</version> </dependency> <dependency&gt 阅读详情
package com.paic.mhis.testCreateTable;


import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import org.apache.poi.hssf.usermodel.HSSFCell;
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.poifs.filesystem.POIFSFileSystem;


public class readExcel {
/*public static void main(String[] args) {
File file = new File("D:\\junhualu\\医网\\跑批生产环境数据.xls");
try {
String[][] str = getData(file,1);
for(int i=0;i<str.length;i++){
for(int j=0;j<str[i].length;j++){
System.out.print(str[i][j]+"|");
}
System.out.println();
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}*/
/**
    * 读取Excel的内容,第一维数组存储的是一行中格列的值,二维数组存储的是多少个行
    * @param file 读取数据的源Excel
    * @param ignoreRows 读取数据忽略的行数,比喻行头不需要读入 忽略的行数为1
    * @return 读出的Excel中数据的内容
    * @throws FileNotFoundException
    * @throws IOException
    */
   public static String[][] getData(File file, int ignoreRows)
          throws FileNotFoundException, IOException {
      List<String[]> result = new ArrayList<String[]>();
      int rowSize = 0;
      BufferedInputStream in = new BufferedInputStream(new FileInputStream(
             file));
      
      // 打开HSSFWorkbook
      POIFSFileSystem fs = new POIFSFileSystem(in);
      HSSFWorkbook wb = new HSSFWorkbook(fs);
      HSSFCell cell = null;
      for (int sheetIndex = 0; sheetIndex < wb.getNumberOfSheets(); sheetIndex++) {
          HSSFSheet st = wb.getSheetAt(sheetIndex);
          // 第一行为标题,不取
          for (int rowIndex = ignoreRows; rowIndex <= st.getLastRowNum(); rowIndex++) {
             HSSFRow row = st.getRow(rowIndex);
             if (row == null) {
                 continue;
             }
             int tempRowSize = row.getLastCellNum() + 1;
             if (tempRowSize > rowSize) {
                 rowSize = tempRowSize;
             }
             String[] values = new String[rowSize];
             Arrays.fill(values, "");
            
             boolean hasValue = false;
             for (short columnIndex = 0; columnIndex <= row.getLastCellNum(); columnIndex++) {
                 String value = "";
                 cell = row.getCell(columnIndex);
                 if (cell != null) {
                /* switch (cell.getCellType()) {
                    case HSSFCell.CELL_TYPE_STRING:
                        value = cell.getStringCellValue();
                        break;
                    case HSSFCell.CELL_TYPE_NUMERIC:
                    value = new DecimalFormat("0").format(cell
                                  .getNumericCellValue());
                 }*/
                 
                    // 注意:一定要设成这个,否则可能会出现乱码
                    //cell.setEncoding(HSSFCell.ENCODING_UTF_16);
                    switch (cell.getCellType()) {
                    case HSSFCell.CELL_TYPE_STRING:
                        value = cell.getStringCellValue();
                        break;
                    case HSSFCell.CELL_TYPE_NUMERIC:
                        if (HSSFDateUtil.isCellDateFormatted(cell)) {
                           Date date = cell.getDateCellValue();
                           if (date != null) {
                               value = new SimpleDateFormat("yyyy-MM-dd")
                                      .format(date);
                           } else {
                               value = "";
                           }
                        } else {
                           value = new DecimalFormat("0").format(cell
                                  .getNumericCellValue());
                        }
                        break;
                    case HSSFCell.CELL_TYPE_FORMULA:
                        // 导入时如果为公式生成的数据则无值
                        if (!cell.getStringCellValue().equals("")) {
                           value = cell.getStringCellValue();
                        } else {
                           value = cell.getNumericCellValue() + "";
                        }
                        break;
                    case HSSFCell.CELL_TYPE_BLANK:
                        break;
                    case HSSFCell.CELL_TYPE_ERROR:
                        value = "";
                        break;
                    case HSSFCell.CELL_TYPE_BOOLEAN:
                        value = (cell.getBooleanCellValue() == true ? "Y"
                               : "N");
                        break;
                    default:
                        value = "";
                    }
                 }
                 if (columnIndex == 0 && value.trim().equals("")) {
                    break;
                 }
                 values[columnIndex] = rightTrim(value); //去除右边空格
                 hasValue = true;
             }
 
             if (hasValue) {
                 result.add(values);
             }
          }
      }
      in.close();
      String[][] returnArray = new String[result.size()][rowSize];
      for (int i = 0; i < returnArray.length; i++) {
          returnArray[i] = (String[]) result.get(i);
      }
      return returnArray;
   }
   
   /**
    * 去掉字符串右边的空格
    * @param str 要处理的字符串
    * @return 处理后的字符串
    */
    public static String rightTrim(String str) {
      if (str == null) {
          return "";
      }
      int length = str.length();
      for (int i = length - 1; i >= 0; i--) {
          if (str.charAt(i) != 0x20) {
             break;
          }
          length--;
      }
      return str.substring(0, length);
   }

}



注意: row.getLastCellNum()与row.getPhysicalNumberOfCells()的区别:

getPhysicalNumberOfCells 是获取不为空的列个数。

getLastCellNum 是获取最后一个不为空的列是第几个。 

         

使用POI对excel文件进行读取 使用POI对excel文件进行读取 Excel转换为HTML表格(包括样式) Excel读取图片 Excel读取附件 使用POI对excel文件进行读取 excel转换HTML 代码块 ReadExcel2Html 类 ColorInfo 类 ColorUtil 类 OperaColor 类 Excel读取图片 代码块 Picture 类主要用于保存图片所在位置x和y分别 阅读详情

相关推荐

统信UOS系统网络服务异常排查:WIFI图标消失与网络设置缺失的解决方案

本文详细解析了统信UOS系统WIFI图标消失与网络设置缺失的常见问题,提供了从基础修复到进阶排查的完整解决方案。重点分析了NetworkManager服务异常的根本原因,包括系统更新中断、权限配置错误等,并给出实用的命令行操作指南和预防措施,帮助用户快速恢复网络功能。

weixin_29234239的博客 619

1.Java POI 读取写入Excel(包括样式)的工具类Utils

Java POI 读取写入Excel的工具类

qq_37992410的博客 1万+

vhr 微人事系统安装与部署教程(SpringBoot + Vue 项目实战)

vhr(微人事)是一个开源的人力资源管理系统项目。系统采用前后端分离架构,主要技术栈包括:后端:MyBatis前端:VueElement UIAxios数据库:MySQL系统通常包含以下模块:员工管理部门管理职位管理薪资管理权限管理系统管理整体功能已经接近企业级后台系统。vhr(微人事)是一个非常经典的开源人力资源管理系统项目,基于SpringBoot + Vue 前后端分离架构。系统包含:员工管理部门管理权限管理薪资管理。

m0_69484557的博客 486

使用POI读取Excel文件

用户可以通过上传excel文件,后端通过读取excel文件的内容并将内容写入数据库中以便更好的使用。本文档使用的excel的工具类既可以读取有合并单元格的文件也可以读取没有合并单元格的文件,并且读取到单元格的数据进行了一些处理。 三、Excel表格信息 有合并单元格的文件...

阿标的博客 1万+

QT的温湿度显示系统

大家好,这里是石侃侃的博客,欢迎前来讨论这篇文章介绍的是DHT11在2440上的基于Qt5.6的应用基于单片机系统的温湿度监测系统构成框图如图2-1所示。图2-1 系统构成框图该系统采用单片机s3c2440作为了本设计的核心元件。利用LCD作为了显示器件,利用触摸屏作为用户界面输入设备,第一行显示当前实时的温度,湿度,第二行依次显示历史时刻最高的温度值,最高的湿度值。第三行是一个文本框,记录了程...

zxpcus的博客 1万+

【论文解读】Baidu Apollo EM Motion Planner

系统顶层是一种多车道策略,通过并行计算车道级别轨迹来处理车道变更场景;在车道轨迹生成器内部,迭代的解决基于Frenet坐标的路径和速度规划;针对路径和速度规划问题,提出了动态规划与基于样条的二次规划相结合的方法,构造了一个可扩展且易于调整的框架,同时处理交通规则、障碍物决策和平滑度问题。该规划器可扩展至高速公路和城市低速驾驶场景。高精地图模块提供了任何人都可以访问的高精地图。感知和定位模块提供了动态环境中必要的信息。运动规划模块考虑生成一条安全平滑的轨迹再交由汽车的控制模块去执行。

xiewf的博客 6093

POI对Excel进行读取操作,工具类,便于操作数据

一:首先POI对Excel 操作进行了一系列的封装,导入,导出Excel这里借助于POI提供的jar包 项目当中导入POI提供的Jar包,这里使用Maven管理 进行导入jar包 &lt;!-- https://mvnrepository.com/artifact/org.apache.poi/poi --&gt; &lt;dependency&gt; &lt;g...

一起记录GIS学习 487

MATLAB库函数unwrap(相位解卷绕)的C语言实现

什么是相位解卷绕 Q = unwrap(P) Q = unwrap(P) corrects the radian phase angles in a vector P by adding multiples of ±2π when absolute jumps between consecutive elements of P are greater than or equal to the default jump tolerance of π radians. If P is a matrix, unw

业精于勤,荒于嬉 4247

java使用POI实现excel文件的读取,兼容后缀名xls和xlsx

首先,引入所需的jar包: 如果是maven管理项目的jar包,只需在pom.xml中加上: POIUtil工具类的代码: package com.cn.util; import java.io.FileNotFoundException; import

期待破茧成蝶 5万+

【知识图谱】实践篇——基于知识图谱的《红楼梦》人物关系可视化及问答系统实践:part2知识获取与图谱构建、服务搭建

前序文章:其中原项目提供了关系数据如下: 其中五列数据表示:人物1,人物2,人物1与人物2关系,人物1所属家族,人物2所属家族。关系说明:以第一列为例,贾演是贾代化的父亲。下面我们就将这个数据放到neo4j中。这些需要去连接,需要安装这个包: 程序中,我使用去读取配置文件, 其中为了保持配置全局唯一性,使用单例的写法。 后面就是创建构建关系文件,构建neo4j图谱数据了,如下: 后期可能会将构建图谱内容使用flask去生成命令行的方式构建,暂时在开发的过程查看构建情况,便于调试。导入关系后,我们再查看

让算法融入生活,改变生活! 4083

五万字解析【ROOT 入门指南】

本文是cern官方root入门指南的初步翻译版,还在进一步校对中....

荷塘阅色 208

【转载】--封装poi读取excel的超强工具类,支持一行代码获取excel内容

转载地址:https://blog.csdn.net/u013474568/article/details/78562728 时隔多年,再次更新下博客。特贡献一份poi读取excel的超强工具类,一行代码读取excel的封装。包括读、写等操作。具体还是跟着代码看吧。 ExcelReadDealUtils:excel读取处理工具类 package all.file.excel.util; i...

This My Life - chisj 855

Python经典编程习题100例:第32例:相反顺序输出列表

不要自卑,去提升实力 互联网行业谁技术牛谁是爹 如果文章可以带给你能量,那是最好的事!请相信自己 加油o~ 本人初学Python,只为熟悉语法编写,大神请勿理会 点击下面链接 Python经典编程100例习题汇总 题目描述: 按相反的顺序输出列表的值。 解题思路: > 利用reverse函数逆序 代码: arr=['f','g','e','b'] print(arr) arr.reverse() print(arr) ...

优快云 精品推荐 1416

java poi读取excel数据_java 使用POI读取excel数据

原文:http://doc.okbase.net/0201zcr/archive/161440.html一、定义Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能。二、所需jar包:三、简单的一个读取excel的demo1、读取文件方法/*** 读取出filePath中的所有数据信息* @param f...

weixin_33716616的博客 1万+

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

POI读取Excel封装

对POI读取Excel进行了一个简单封装,代码如下: package com.aline.zkdm; import org.apache.poi.hssf.usermodel.HSSFDateUtil; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.*; import o...

csdn_meng的博客 1万+

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

poi对excel进行读取

一、背景: 在我们日常的开发中经常会有产品经理或者项目上有要求就是实现excel导入这个功能,今天花点时间做了这个功能。在以后工作中可以直接使用和持续完善。 二、实现代码: 1.公用实体-excel组件配置 public class Config { private int titleRow; //标题行 private int headRow; //头部行 priv...

砌墙民工的博客 1577

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

POI的读取EXCEL的【总结】

java使用POI获取EXCEL数据

aristo 2390

使用POI读取excel文件内容

1.前言 项目中要求读取excel文件内容,并将其转化为xml格式。常见读取excel文档一般使用POI和JExcelAPI这两个工具。这里我们介绍使用POI实现读取excel文档。 2.代码实例: package edu.sjtu.erplab.poi;import java.io.FileInputStream;import java.io.FileNotFoundE

11万+

poi读取Excel

用原生poi读取文件: @RunWith(BlockJUnit4ClassRunner.class) public class PoiReadExcel { public String getCellStringValue(Cell cell) { String cellValue = ""; if (cell == null) return null;/...

茫然背影的博客 1375

利用POI读取Excel文件

前几天实现了利用POI创建Excel文件,今天分享一下如何利用POI读取Excel文件。 要读取的文件内容,以下截图已给出: 下面讲读取文件内容的方法。 先创建一个读取Excel的工具类。 /** * 操作Excel表格的功能类 */ public class ExcelReader { private POIFSFileSystem fs;

程序员蜗牛 816

java poi 读取有密码加密的Excel文件

import org.apache.poi.hssf.usermodel.HSSFCell;import org.apache.poi.hssf.usermodel.HSSFDateUtil; import org.apache.poi.openxml4j.exceptions.InvalidFormatException; import org.apache.poi.poifs.crypt.De

卢建文的专栏 1万+

poi读取excel 转换实体_Java POI读取Excel数据到实体类

1 packagecom.payb.hsp.bjproj.common.util;23 importlombok.extern.slf4j.Slf4j;4 importorg.apache.commons.lang3.time.DateFormatUtils;5 importorg.apache.poi.hssf.usermodel.HSSFDateUtil;6 importorg.apache....

weixin_39762856的博客 886

java poi 读取excel 图片_Poi读取excel插图的方法和操作步骤

我们在使用Excel制作表格的时候,有时会使用“Poi读取excel插图”,但是很多初学者都不懂也不会制作。下面,我就给大家讲一下“Poi读取excel插图”的相关方法和操作步骤。首先我们要知道,POI是Java程序中的一个组件,我们要想使用个组件需要到官网下载并安装。关于下载与安装大家可以到网上搜一搜,这个有很多,并不难查。下面就是Java代码部分了,我把代码分享给大家,大家可以参考。impor...

weixin_39813200的博客 1544

通过POI组件读取Excel大文件

问题背景 在Java中读取Excel可以通过POI组件。POI提供了跨平台的能力,在linux环境下可以对excel文件做操作;如果是采用COM接口则必须要在window下,而且需要安装office软件。 POI提供UserModel和事件驱动两种方式读写excel。UserModel方式操作简洁,但是内存消耗大,稍微大一点的excel读取就会报内存溢出。 下面讲的是如果通过事件驱动的方式读...

Neo.Yang的专栏 1万+

java 读取Excel数据(POI)

1、添加依赖 <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>3.13</version> </dependency> <depend...

kanglong129的博客 2221
上一篇: itext document table
下一篇: uml之Robustness Diagram
lujun12
博客等级 码龄15年 0粉丝 11原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值