1.创建文件流,打开EXCEL文件

FileInputStream excelFile = new FileInputStream(excelPath);
XSSFWorkbook workbook = new XSSFWorkbook(excelFile);

2.切换到对应文件名

XSSFSheet excelSheet = workbook.getSheet(sheetName);

3.获取实际行数和列数

int rows = excelSheet.getPhysicalNumberOfRows(); //行数
int cols = excelSheet.getRow(0).getPhysicalNumberOfCells();//列数

4.读取数据

    public static String ReadData(XSSFSheet excelSheet, int row, int col){
try{
String CellData= "";
XSSFCell cell = excelSheet.getRow(row).getCell(col);
if(cell.getCellType() == HSSFCell.CELL_TYPE_NUMERIC){
cell.setCellType(Cell.CELL_TYPE_STRING);
CellData = cell.getStringCellValue();
}
else if(cell.getCellType() == HSSFCell.CELL_TYPE_STRING){
CellData = cell.getStringCellValue();
}
else if(cell.getCellType() == HSSFCell.CELL_TYPE_FORMULA){
CellData = cell.getCellFormula();
}
return CellData;
}catch(Exception e){
return "";
}
}

示例:

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook; public class Excel { public static void main(String[] args) throws IOException {
String excelPath = "F:\\login.xlsx";
String sheetName = "001";
try{
FileInputStream excelFile = new FileInputStream(excelPath);
XSSFWorkbook workbook = new XSSFWorkbook(excelFile);
XSSFSheet excelSheet = workbook.getSheet(sheetName);
int rows = excelSheet.getPhysicalNumberOfRows(); //行数
int cols = excelSheet.getRow(0).getPhysicalNumberOfCells();//列数 for(int row = 0;row< rows; ++row){
for (int col =0; col < cols; ++col){
System.out.print(ReadData(excelSheet, row, col) + ' ');
if(col ==1)
System.out.println();
}
}
workbook.close();
}catch (FileNotFoundException e ){
System.out.println("找不到该文件");
}
} public static String ReadData(XSSFSheet excelSheet, int row, int col){
try{
String CellData= "";
XSSFCell cell = excelSheet.getRow(row).getCell(col);
cell.setCellType(Cell.CELL_TYPE_STRING);
CellData = cell.getStringCellValue();
return CellData;
}catch(Exception e){
return "";
}
}
}

输出结果:

5.写入excel

同样我们一开始先来想下手工写入数据流程

1:打开EXCEL

2:指定Sheet

3: 指定行号

4:指定列号

5:写入数据

6:保存数据

了解了操作流程,我们就将思想转为成代码其实1,2,3,4

我们在读Excel时就已写过,但这里要注意下,我们在读Excel时是不是已有数据,那也就是说每个单元格中已有内容,我们用getRow(行号)不是空值对吗,如果我们要往一个没有值的单元格写值时一开始那个行号是空值,所以我们第三步应改为创建一个行号,第四步改为创一个列号创建行号

我们可以用CreateRow(行号)在创建行号时,我们要想一个问題,我们一开始创建了第一行,并写入一个值到单元格中,比如我想写入一个结果到第一行第二个单元格时也是先创建一行吗,如果再用创建方式生成第一行,那前一次写入的数据会不会不存在呢,实际上是会被删掉的,这个自已可以去试试

所以我们代码实现应是这样一开始用getrow(1)如果反回的值是空值,那就用CreateRow的方式,如果不是空值我就用GetRow(1)

public static void setData(int row, int col, String sheetName, String Data, String WriteExcelPath) throws IOException{

        try{

            FileInputStream excelFile = new FileInputStream(WriteExcelPath);
XSSFWorkbook workbook = new XSSFWorkbook(excelFile);
XSSFSheet excelSheet = workbook.getSheet(sheetName); XSSFRow Row = excelSheet.getRow(row);
if(Row == null)
Row = excelSheet.createRow(row);
XSSFCell Cell = Row.getCell(col); if(Cell == null )
Cell = Row.createCell(col); Cell.setCellValue(Data);
FileOutputStream fileOut = new FileOutputStream(WriteExcelPath);
workbook.write(fileOut);
fileOut.close();
workbook.close();
}catch(Exception e){
System.out.println("数据写入错误");
}
}

Java——poi读取Excel文件的更多相关文章

  1. JAVA使用POI读取EXCEL文件的简单model

    一.JAVA使用POI读取EXCEL文件的简单model 1.所需要的jar commons-codec-1.10.jarcommons-logging-1.2.jarjunit-4.12.jarlo ...

  2. 项目一:第四天 1、快递员的条件分页查询-noSession,条件查询 2、快递员删除(逻辑删除) 3、基于Apache POI实现批量导入区域数据 a)Jquery OCUpload上传文件插件使用 b)Apache POI读取excel文件数据

    1. 快递员的条件分页查询-noSession,条件查询 2. 快递员删除(逻辑删除) 3. 基于Apache POI实现批量导入区域数据 a) Jquery OCUpload上传文件插件使用 b) ...

  3. 使用POI 读取 Excel 文件,读取手机号码 变成 1.3471022771E10

    使用POI 读取 Excel 文件,读取手机号码 变成 1.3471022771E10 [问题点数:40分,结帖人xieyongqiu]             不显示删除回复             ...

  4. Java实现POI读取Excel文件,兼容后缀名xls和xlsx

    1.引入所需的jar包: maven管理项目的话直接添加以下坐标即可: <!-- https://mvnrepository.com/artifact/org.apache.poi/poi -- ...

  5. 使用jxl,poi读取excel文件

    作用:在java后台添加一个方法,读取导入的excel内容,根据需要返回相应的sql语句,以完成对临时表的插入操作. 使用jxl读取excel文件 package com.sixthf.bi.sapp ...

  6. 使用POI读取excel文件内容

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

  7. jspsmart(保存文件)+poi(读取excel文件)操作excel文件

    写在前面: 项目环境:jdk1.4+weblogic 需求:能上传excel2003+2007 由于项目不仅需要上传excel2003,还要上传excel2007,故我们抛弃了jxl(只能上传exce ...

  8. 使用poi读取excel文件 Cannot get a text value from a numeric cell

    我这样转换得到一个excel文本域的值 Cell cell = row.getCell(c); cell.setCellType(Cell.CELL_TYPE_STRING); String park ...

  9. spring boot 使用 POI 读取Excel文件

    内容简介 本文主要介绍使用POI进行Excel文件的相关操作,涉及读取文件,获取sheet表格,对单元格内容进行读写操作,以及合并单元格的操作. Excel文件目录 Excel模板文件存了resour ...

随机推荐

  1. Android之网络图片加载的5种基本方式

    学了这么久,最近有空把自己用到过的网络加载图片的方式总结了出来,与大家共享,希望对你们有帮助. 此博客包含Android 5种基本的加载网络图片方式,包括普通加载HttpURLConnection.H ...

  2. The web application you are attempting to access on this web server is currently unavailable.......

    今天去服务器安装了个.net 4.0 framework(原本有1.0和2.0的),配置好站点后,选择版本为4.0,访问出错,错误代码如下 Server Application Unavailable ...

  3. ASP.NET Page 指令

    一些重要的Page指令 虽然Page公开了很多属性,让我们可以在运行时调整它的状态与行为,但是,还有些重要的参数却是以“指令”方式提供的,需要在设计时就指定.下面是我整理的一些我认为 比较重要并且经常 ...

  4. 装载Properties资源文件的项目中使用

    ssm项目中打算将发短信的每小时每天的限定变成可配置的.于是将配置信息写在资源文件中,现在有两种方式加载资源文件,一个是使用spring注入方式,@Value注解注入,当然,前面需要在项目中装载.第二 ...

  5. Windows 10 安装 Docker

    下载Docker For Windows 地址:https://download.docker.com/win/stable/Docker%20for%20Windows%20Installer.ex ...

  6. java IO 学习(三)

    java IO 学习(一)给了java io 进行分类,这一章学习这些类的常用方法 一.File 1.创建一个新的File的实例: /** * 创建一个新的File实例 */ File f = new ...

  7. Ubuntu网络配置IP和DNS等,适用于14.04,16.04和17.10

    本文主要介绍Ubuntu系统的网络设置,包括IP,DNS和主机名等,适用于14.04,16.04和17.10等版本 ===============  完美的分割线 ================ = ...

  8. Python Logger使用

    1. 单文件的logging配置 import logging logging.basicConfig(level=logging.DEBUG, format='%(asctime)s %(filen ...

  9. python下的select模块使用 以及epoll与select、poll的区别

    python下的select模块使用 以及epoll与select.poll的区别 先说epoll与select.poll的区别(总结) 整理http://www.zhihu.com/question ...

  10. emacs之配置7,tabbar插件

    emacsConfig/tabbar-setting.el (require 'tabbar) (tabbar-mode ) (global-set-key (kbd "<M-up&g ...