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. JSP 隐含对象

    JSP 隐含对象 JSP隐含对象是JSP容器为每个页面提供的Java对象,开发者可以直接使用它们而不用显式声明.JSP隐含对象也被称为预定义变量. JSP所支持的九大隐含对象: 对象描述 reques ...

  2. Hive之序列化与反序列化(SerDe)

    序列化与反序列化的作用 1,序列化是对象转化为字节序列的过程: 2,反序列化是字节码恢复为对象的过程: 序列化的作用主要有两个: (1),对象向的持久化:即把对象转换成字节码后保存文件: (2),对象 ...

  3. UVA-10129 Play on Words (判断欧拉道路的存在性)

    题目大意:给出一系列单词,当某个单词的首字母和前一个单词的尾字母相同,则这两个单词能链接起来.给出一系列单词,问是否能够连起来. 题目分析:以单词的首尾字母为点,单词为边建立有向图,便是判断图中是否存 ...

  4. 046——VUE中组件之使用动态组件灵活设置页面布局

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. Android 遍历全国地区位置(一)

    1.布局 choose_area.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayo ...

  6. [批处理]Oracle启动助手

    前段日子开始学Oracle数据库,但是由于Oracle数据库的服务启动时间很长 所以机房的里面所有电脑的Oracle服务全部是被禁用的 所以每次上机使用的时候都要先进服务管理,然后把禁用更改为手动模式 ...

  7. L202

    Yuan Cao’s teenage years were hardly typical. By age 18, he had already graduated from high school, ...

  8. L183 Chinese company unveils first satellite for free WiFi

    A Chinese internet technology company unveiled the first satellite in a constellation plan to provid ...

  9. L180

    The cylinder is a crucial part of the washing machine His debonair dismissal of my inquiry concernin ...

  10. asp.net textbox等服务器控件包含html代码的时候,提交会报错

    asp.net  textbox等服务器控件包含html代码的时候,提交会报错,页面中的其他按钮点击的时候也会报错误, 解决方法: Page里加上这个属性 ValidateRequest=" ...