全栈工程师开发手册 (作者:栾鹏)
java教程全解

java使用poi读取存储excel表格,包括xls和xlsx格式。

需要导入的包
poi-3.14.jar
poi-ooxml-3.14.jar
poi-ooxml-schemas-3.14.jar
xmlbeans-2.6.0.jar

代码中需要引入

import org.apache.poi.hssf.usermodel.HSSFCell;
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.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

测试代码

public static void main(String[] arges){try {List<List<String>> alldata=readExcel("myfile.xlsx");for (List<String> arrayList : alldata) {for (String string : arrayList) {System.out.println(string);}}} catch (Exception e) {// TODO: handle exception}}

操作excel表格函数类的实现


package com.lp.app.io;import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;import org.apache.poi.hssf.usermodel.HSSFCell;
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.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;//使用poi读取excel表格,包括xls和xlsx格式
public class MyExcel_poi {//读取表格文件public static List<List<String>> readExcel(String path) throws IOException {if (path == null ||"".equals(path)) {return null;} else {String type = gettype(path);if (!"".equals(type)) {if ("xls".equals(type)) {return readXls(path);} else if ("xlsx".equals(type)) {return readXlsx(path);}} else {System.out.println(path + " : Not the Excel file!");}}return null;}//根据路径查询是xls文件还是xlsx文件public static String gettype(String path) {if (path == null || "".equals(path.trim())) {return "";}if (path.contains(".")) {return path.substring(path.lastIndexOf(".") + 1, path.length());}return "";}//读取xlsx文件public static List<List<String>> readXlsx(String path) throws IOException {System.out.println("Processing..." + path);InputStream is = new FileInputStream(path);XSSFWorkbook xssfWorkbook = new XSSFWorkbook(is);List<List<String>> list = new ArrayList<List<String>>();// Read the Sheetfor (int numSheet = 0; numSheet < xssfWorkbook.getNumberOfSheets(); numSheet++) {XSSFSheet xssfSheet = xssfWorkbook.getSheetAt(numSheet);if (xssfSheet == null) {continue;}// Read the Rowfor (int rowNum = 1; rowNum <= xssfSheet.getLastRowNum(); rowNum++) {XSSFRow xssfRow = xssfSheet.getRow(rowNum);if (xssfRow != null) {//hssfSheet.getLastRowNum();//最后一行行标,比行数小1//hssfSheet.getRow(k).getLastCellNum();//获取列数,比最后一列列标大1List<String> rowStrings = new ArrayList<String>();for (int columnNum = 0; columnNum < xssfRow.getLastCellNum(); columnNum++) {rowStrings.add(getValue(xssfRow.getCell(columnNum)));}list.add(rowStrings);}}}xssfWorkbook.close();return list;}//读取xls文件public static List<List<String>> readXls(String path) throws IOException {System.out.println("Processing..." + path);InputStream is = new FileInputStream(path);HSSFWorkbook hssfWorkbook = new HSSFWorkbook(is);List<List<String>> list = new ArrayList<List<String>>();// Read the Sheetfor (int numSheet = 0; numSheet < hssfWorkbook.getNumberOfSheets(); numSheet++) {HSSFSheet hssfSheet = hssfWorkbook.getSheetAt(numSheet);if (hssfSheet == null) {continue;}// Read the Rowfor (int rowNum = 0; rowNum <= hssfSheet.getLastRowNum(); rowNum++) {HSSFRow hssfRow = hssfSheet.getRow(rowNum);if (hssfRow != null) {//hssfSheet.getLastRowNum();//最后一行行标,比行数小1//hssfSheet.getRow(k).getLastCellNum();//获取列数,比最后一列列标大1List<String> rowStrings = new ArrayList<String>();for (int columnNum = 0; columnNum < hssfRow.getLastCellNum(); columnNum++) {rowStrings.add(getValue(hssfRow.getCell(columnNum)));}list.add(rowStrings);}}}hssfWorkbook.close();return list;}@SuppressWarnings("static-access")private static String getValue(XSSFCell xssfRow) {if (xssfRow.getCellType() == xssfRow.CELL_TYPE_BOOLEAN) {return String.valueOf(xssfRow.getBooleanCellValue());} else if (xssfRow.getCellType() == xssfRow.CELL_TYPE_NUMERIC) {return String.valueOf(xssfRow.getNumericCellValue());} else {return String.valueOf(xssfRow.getStringCellValue());}}@SuppressWarnings("static-access")private static String getValue(HSSFCell hssfCell) {if (hssfCell.getCellType() == hssfCell.CELL_TYPE_BOOLEAN) {return String.valueOf(hssfCell.getBooleanCellValue());} else if (hssfCell.getCellType() == hssfCell.CELL_TYPE_NUMERIC) {return String.valueOf(hssfCell.getNumericCellValue());} else {return String.valueOf(hssfCell.getStringCellValue());}}
}

java使用poi读取存储excel表格,包括xls和xlsx格式相关推荐

  1. c#读取生成excel表格文件xls、xlsx格式文件

    全栈工程师开发手册 (作者:栾鹏) c#教程全解 c#存储生成excel表格格式xls.xlsx格式的文件 需要电脑安装对应版本的office,并且在项目中引用excel 测试代码 static vo ...

  2. python实现多EXCEL表格合并xls、xlsx格式

    目录 前言 代码的特点 完整代码 感言 前言 以下都是我学习CSDN里面的各位大神的分享: 我主要参考目标-主体和弹窗 次要参考-进度显示 代码的特点 1.可以弹窗选择需要合并的文件所在文件夹: 2. ...

  3. r语言导出文件为xlxs_R语言学习——R读取txt、csv、xls和xlsx格式文件

    最近项目中运用到了R读取文件数据,所以把相关好用的.经过验证的方法总结了一下,有效避免下次入坑. 1. R读取txt文件 使用R读取txt文件直接使用read.table()方法进行读取即可,不需要加 ...

  4. Java使用poi导出数据到excel(包括xls和xlsx两种格式)并通过浏览器下载

    情景:将数据导出到excel是java开发常用的功能,数据量不大的时候,xls和xlsx两种格式的文件都行,但是数据量太大的时候就有区别了,xls格式的文件一个sheet页最多只能存六万多条数据,而x ...

  5. java 使用POI导出复杂excel表格,通过浏览器下载

    pom.xml依赖 <!--POI Excel表格导出依赖--> <dependency><groupId>org.apache.poi</groupId&g ...

  6. 使用POI导出Excel,以及xls和xlsx格式问题

    /*--------------------------------------导出开始--------------------------------------------------*/@Ove ...

  7. 利用python将excle表格由xls转换为xlsx格式

    转换的起因是想对excle表格中的内容进行批量脱敏处理,但尝试了很多次,脱敏代码只能处理xlsx格式,因此首先进行批量格式转换,代码很简单. 一.python下载与安装 在以下网址下载即可,然后安装 ...

  8. java:用HSSFWorkbook实现excel导入(xls、xlsx兼容)

    业务:批量导入不同用户的档案信息,excel格式为:信息用户(独一无二)- 姓名 - 性别 - - 数据库档案字段值表为:信息用户id-档案字段id-档案字段值 已有插入方法:add(String u ...

  9. Android app 读取xls和xlsx格式的excel文件

    在app开发中,有项功能 要求读取 Tv电视里面的xls 和 xlsx格式的excel文件 然后显示出来 所以需要poi-3.12-android-a.jar和poi-ooxml-schemas-3. ...

最新文章

  1. 语言axff所占字节数_【每日一答】(74)数组名v.s.指针变量,C语言其实很简单形象比喻为“是一个朋友圈的”...
  2. (已解决)ubuntu20.04 jar xvf XXX.zip报错-java.io.EOFException:Unexpected end of ZLIB input stream
  3. JavaScript初学者编程题(3)
  4. JS操作iframe
  5. 对话框编程之非模态对话框 [04]
  6. 云炬随笔20180607
  7. LeetCode_108.将有序数组转换为二叉搜索树
  8. perl pop和push函数,不使用索引更能利用perl的特性,减少边界值错误发生的几率...
  9. 基于享元记忆的 Boost.Flyweight 示例
  10. 网络游戏中网络模块浅析
  11. mysql 知识_关于mysql基础知识的介绍
  12. aix系统怎么开启ftp服务器,liunx和aix 系统开启ftp服务
  13. css3 模拟fadein,CSS3 transition fadein with display:none
  14. SHH could not initialize proxy - the owning Session was closed 和延迟加载问题
  15. 苹果4s怎么越狱教程_苹果iOS 11.4-11.4.1越狱发布:附越狱教程
  16. 居家办公的团队协作模式改进思考
  17. iOS 开发者账号总结
  18. 九月英语总结——不同凡响
  19. vue渐进式框架的理解
  20. Camera构图之三分法

热门文章

  1. 论文笔记:语音情感识别(二)声谱图+CRNN
  2. 离线语音控制并不等于本地语音识别
  3. ES6的概念以及运行环境~满满的干货
  4. 【王道操作系统笔记】操作系统的发展和分类
  5. 【动态规划】完全背包问题:构成m的最少个数
  6. Vscode 调试:跟踪局部变量的变化
  7. 原生php使用foreach,php – 使用foreach和session循环 - 程序园
  8. 使用logstash迁移es数据
  9. Node.js Error: Cannot find module express
  10. thymeleaf获取url地址跳转时所带参数