Java读取Excel文件(包括xls和xlsx)的样例程序
样例程序如下所示,其中:
- parseXls()函数依赖于jxl,只能读取xls格式文件;
- parseExcel()函数依赖于apache poi,能够读取xls和xlsx两种格式的文件。
jxl的依赖:
<!-- https://mvnrepository.com/artifact/net.sourceforge.jexcelapi/jxl -->
<dependency>
<groupId>net.sourceforge.jexcelapi</groupId>
<artifactId>jxl</artifactId>
<version>2.6.12</version>
</dependency>
apache poi的依赖:
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.10-FINAL</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.10-FINAL</version>
</dependency>
示例代码:
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import jxl.Sheet;
import jxl.Workbook;
public class ExcelParser {
public List<List<String>> parseXls(File file) {
try {
Workbook workbook = Workbook.getWorkbook(file);
Sheet sheet = workbook.getSheet(0);
List<List<String>> list = new ArrayList<List<String>>();
for (int i = 0; i < sheet.getRows(); i++) {
List<String> rowList = new ArrayList<String>();
for (int j = 0; j < sheet.getColumns(); j++) {
rowList.add(sheet.getCell(j, i).getContents());
}
list.add(rowList);
}
// test
for (List<String> rowList : list) {
for (String s : rowList)
System.out.print(s + ",");
System.out.println();
}
return list;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
public List<List<String>> parseExcel(File file) {
try {
InputStream fis = new FileInputStream(file);
String fileName = file.getName();
org.apache.poi.ss.usermodel.Workbook workbook = null;
if (fileName.toLowerCase().endsWith("xlsx")) {
workbook = new XSSFWorkbook(fis);
} else if (fileName.toLowerCase().endsWith("xls")) {
workbook = new HSSFWorkbook(fis);
}
org.apache.poi.ss.usermodel.Sheet sheet = workbook.getSheetAt(0);
List<List<String>> list = new ArrayList<List<String>>();
Iterator<Row> rowIterator = sheet.iterator();
while (rowIterator.hasNext()) {
Row row = rowIterator.next();
List<String> rowList = new ArrayList<String>();
Iterator<Cell> cellIterator = row.cellIterator();
while (cellIterator.hasNext()) {
Cell cell = cellIterator.next();
switch(cell.getCellType()) {
case Cell.CELL_TYPE_NUMERIC:
rowList.add("" + cell.getNumericCellValue());
break;
case Cell.CELL_TYPE_STRING:
default:
rowList.add(cell.getStringCellValue());
break;
}
}
list.add(rowList);
}
// test
for (List<String> rowList : list) {
for (String s : rowList)
System.out.print(s + ",");
System.out.println();
}
return list;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
public static void main(String[] args) {
new ExcelParser().parseExcel(new File("C:\\Users\\zifeiy\\Documents\\zifeiy.xlsx"));
}
}
参考链接:https://www.journaldev.com/2562/apache-poi-tutorial
Java读取Excel文件(包括xls和xlsx)的样例程序的更多相关文章
- 关于解决java读取excel文件遇空行抛空指针的问题 !
关于解决java读取excel文件遇空行抛空指针的问题 ! package exceRead; import java.io.File; import java.io.FileInputStream; ...
- Java读取Excel文件的几种方法
Java读取 Excel 文件的常用开源免费方法有以下几种: 1. JDBC-ODBC Excel Driver 2. jxl.jar 3. jcom.jar 4. poi.jar 简单介绍: 百度文 ...
- java读取excel文件的代码
如下内容段是关于java读取excel文件的内容,应该能对各朋友有所用途. package com.zsmj.utilit; import java.io.FileInputStream;import ...
- java 读取Excel文件并数据持久化方法Demo
import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util ...
- C#仪器数据文件解析-Excel文件(xls、xlsx)
不少仪器工作站可以将数据导出为Excel文件,包括97-2003版本的xls文件和2007+的xlsx文件. 采集Excel文件相比采集pdf文件更容易.程序更健壮,毕竟Excel中数据有明确的行.列 ...
- java读取excel文件内容
1.导入依赖JAR包 <!-- jxl 操作excel --> <dependency> <groupId>org.jxls</groupId> < ...
- java读取excel文件数据导入mysql数据库
这是我来公司的第二周的一个小学习任务,下面是实现过程: 1.建立maven工程(方便管理jar包) 在pom.xml导入 jxl,mysql-connector 依赖 可以在maven仓库搜索 2.建 ...
- JAVA 读取excel文件成List<Entity>
package com.fsinfo.common.utils; import com.fsinfo.modules.enterprise.entity.EnterpriseRecordEntity; ...
- java读取excel文件(.xls,xlsx,csv)
前提,maven工程通过poi读写excel文件,需要在pom.xml中配置依赖关系: 在<dependencies>中添加如下代码 <dependency> <grou ...
随机推荐
- "=="和equals小结
通俗点讲,==是看看左右是不是一个东西.equals是看看左右是不是长得一样.如何记住嘛.如果单纯是想记住, ==:等于.equals:相同.两个长得一样的人,只能说长的相同(equals),但是不 ...
- jquery手机端产品列表响应式宽高检测宽度赋值给高度让宽高相同
在手机端浏览商品列表,开发人员懂得设计图片做正好的尺寸,那样浏览很好,但有人天生泛懒图片都是随手上传不管大小合适不合适,要求还是响应式的.今天就用jquery检测宽度,并赋值给高度来实现错位问题 &l ...
- selenium之python源码解读-webdriver继承关系
一.webdriver继承关系 在selenium中,无论是常用的Firefox Driver 还是Chrome Driver和Ie Drive,他们都继承至selenium\webdriver\re ...
- Cashe的使用
1.CacheHelper public class CacheHelper { public static ObjectCache Cache { get { return MemoryCache. ...
- linux系列(十七):whereis命令
1.命令格式: whereis [-bmsu] [BMS 目录名 -f ] 文件名 2.命令功能: whereis命令是定位可执行文件.源代码文件.帮助文件在文件系统中的位置.这些文件的属性应属于原始 ...
- spring boot + mybaits 处理枚举类 enum
枚举: //实现层调用 orderMapper.getOrder(OrderStatus.DISCOUNT); sql打印: 实际sql: select * from order where orde ...
- ROS手动编写服务端和客户端service demo(C++)
service demo 原理和 topic 通信方式很像 点击打开链接,因此 1.srv : 进入 service_demo 创建 srv 文件夹,创建 Greeting.srv,将以下代码插入: ...
- ros python 构造 pose
#!/usr/bin/env python import numpy as npfrom geometry_msgs.msg import Pose, Point, Quaternion, Twist ...
- zookpeer 和 redis 集群内一致性协议 及 选举 对比
zookeeper 使用的是zab协议,类似 raft 的 Strong Leader 模式 redis 的哨兵 在 崩溃选举的时候采用的是 raft的那一套term. 因为redis 采用的是异步 ...
- Dp优化之决策单调栈优化
证明:g(i) ≤ g(j) (i ≤ j) 令 d=g(i) , k<d , 设cut = x表示 f(i) = f(x) + w[x,i] ( x < i ) 构造一个式子: ...