一、引用的jar包,apache的POI

// https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml
compile group: 'org.apache.poi', name: 'poi-ooxml', version: '3.17'
// https://mvnrepository.com/artifact/org.apache.poi/poi
compile group: 'org.apache.poi', name: 'poi', version: '3.17'

二、完整的类示例

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date; import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.DateUtil;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook; public class ExcelUtil { public static void main(String[] args) {
long t = System.currentTimeMillis();
// ArrayList<ArrayList<Object>> result = new
// ExcelUtil().readExcel("D://工作表.xlsx");
ArrayList<ArrayList<Object>> result = new ExcelUtil().readExcelByColumn("D://工作表.xlsx", new int[] { 1, 2, 9 });
System.out.println(System.currentTimeMillis() - t);
for (int i = 0; i < result.size(); i++) {
for (int j = 0; j < result.get(i).size(); j++) {
System.out.print("[" + result.get(i).get(j).toString() + "]\t");
}
System.out.println("");
}
} public ArrayList<ArrayList<Object>> readExcel(String fileName) {
ArrayList<ArrayList<Object>> rowList = new ArrayList<ArrayList<Object>>();
ArrayList<Object> colList;
try {
Workbook wb = initWorkBook(fileName);
Sheet sheet = wb.getSheetAt(0);
Row row = null;
Cell cell = null;
for (int i = sheet.getFirstRowNum(), rowCount = 0; rowCount < sheet.getPhysicalNumberOfRows(); i++) {
row = sheet.getRow(i);
colList = new ArrayList<Object>();
if (row == null) {
if (i != sheet.getPhysicalNumberOfRows()) {
rowList.add(colList);
}
continue;
} else {
rowCount++;
}
for (int j = row.getFirstCellNum(); j <= row.getLastCellNum(); j++) {
cell = row.getCell(j);
if (cell == null) {
if (j != row.getLastCellNum()) {
colList.add("");
}
continue;
}
colList.add(readColValue(cell));
}
rowList.add(colList);
}
return rowList;
} catch (Exception e) {
System.out.println(e.getMessage());
}
return null;
} public ArrayList<ArrayList<Object>> readExcelByColumn(String fileName, int[] colId) {
ArrayList<ArrayList<Object>> rowList = new ArrayList<ArrayList<Object>>();
ArrayList<Object> colList;
try {
Workbook wb = initWorkBook(fileName);
Sheet sheet = wb.getSheetAt(0);
Row row = null;
Cell cell = null;
for (int i = sheet.getFirstRowNum(), rowCount = 0; rowCount < sheet.getPhysicalNumberOfRows(); i++) {
row = sheet.getRow(i);
colList = new ArrayList<Object>();
if (row == null) {
if (i != sheet.getPhysicalNumberOfRows()) {
rowList.add(colList);
}
continue;
} else {
rowCount++;
}
for (int j = 0; j < colId.length; j++) {
cell = row.getCell(colId[j]);
// here different from read all ! as no end limit.
if (cell == null) {
colList.add("");
continue;
}
colList.add(readColValue(cell));
}
rowList.add(colList);
}
return rowList;
} catch (Exception e) {
System.out.println(e.getMessage());
}
return null; } private String readColValue(Cell cell) {
String value = "";
switch (cell.getCellTypeEnum()) {
case STRING:
value = cell.getStringCellValue();
break;
case NUMERIC:
short format = cell.getCellStyle().getDataFormat();
if (format == 0) {
DecimalFormat df = new DecimalFormat("#");
value = df.format(cell.getNumericCellValue());
} else {
SimpleDateFormat sdf = null;
if (format == 14 || format == 31 || format == 57 || format == 58) {
sdf = new SimpleDateFormat("yyyy-MM-dd");
} else if (format == 20 || format == 32) {
sdf = new SimpleDateFormat("HH:mm");
}
Date date = DateUtil.getJavaDate(cell.getNumericCellValue());
value = sdf.format(date);
}
break;
case BOOLEAN:
value = String.valueOf(Boolean.valueOf(cell.getBooleanCellValue()));
break;
case BLANK:
value = "";
break;
default:
value = cell.toString();
}
return value;
} private Workbook initWorkBook(String fileName) throws IOException {
File file = new File(fileName);
InputStream is = new FileInputStream(file);
Workbook workbook = null;
if (fileName.endsWith(".xls")) {
workbook = new HSSFWorkbook(is);
} else if (fileName.endsWith(".xlsx")) {
workbook = new XSSFWorkbook(is);
}
return workbook;
}
}

Java读取excel的示例的更多相关文章

  1. Java读取Excel文件的几种方法

    Java读取 Excel 文件的常用开源免费方法有以下几种: 1. JDBC-ODBC Excel Driver 2. jxl.jar 3. jcom.jar 4. poi.jar 简单介绍: 百度文 ...

  2. PHPExcel读取excel文件示例

    PHPExcel读取excel文件示例PHPExcel最新版官方下载网址:http://phpexcel.codeplex.com/PHPExcel是一个非常方便生成Excel格式文件的类,官方下载包 ...

  3. Java读取excel表格

    Java读取excel表格 一般都是用poi技术去读取excel表格的,但是这个技术又是什么呢 什么是Apache POI? Apache POI是一种流行的API,它允许程序员使用Java程序创建, ...

  4. java读取excel文件的代码

    如下内容段是关于java读取excel文件的内容,应该能对各朋友有所用途. package com.zsmj.utilit; import java.io.FileInputStream;import ...

  5. Java读取Excel数据

    Java读取Excel数据,解析文本并格式化输出 Java读取Excel数据,解析文本并格式化输出 Java读取Excel数据,解析文本并格式化输出 下图是excel文件的路径和文件名 下图是exce ...

  6. 关于解决java读取excel文件遇空行抛空指针的问题 !

    关于解决java读取excel文件遇空行抛空指针的问题 ! package exceRead; import java.io.File; import java.io.FileInputStream; ...

  7. 使用poi读取excel数据示例

    使用poi读取excel数据示例 分两种情况: 一种读取指定单元格的值 另一种是读取整行的值 依赖包: <dependency> <groupId>org.apache.poi ...

  8. [转载]Java读取Excel中的单元格数据

    目前网上能找到的读取Excel表格中数据的两种比较好的方案:PageOffice好用开发效率高:POI免费.供大家参考,针对具体情况选择具体方案. 1. PageOffice读取excel impor ...

  9. java读取excel文件内容

    1.导入依赖JAR包 <!-- jxl 操作excel --> <dependency> <groupId>org.jxls</groupId> < ...

随机推荐

  1. phpMyadmin安装极简教程[下载,解压,登录]

    1.下载一个压缩包,例如: 2. 解压到web根目录并重命名为phpmyadmin 3.在浏览器输入http://localhost/phpmyadmin就可以看到登陆界面了,登陆之后,数据库,表的增 ...

  2. 创建Python程序

    1. 创建Python程序 欢迎来到Python世界! 本系列文章告诉你怎么样编写Python程序.Python仅仅是一种文本文件.跟普通文本文件是一样的,仅仅只是这样的文本文件不但能够看,还能够在P ...

  3. nagios加入被监控的机器

    此工作大约用时: 30min 准备工作, 在被监控机上 yum install -y gcc glibc glibc-common gd gd-devel xinetd openssl-devel 0 ...

  4. JavaWeb项目异常管理之log4j的使用教程

    转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6399191.html 在项目中的应用见: https://github.com/ygj0930/CoupleS ...

  5. cocos2d-js Shader系列1:cocos2d-js Shader和OpenGL ES2.0

    cocos2d的Shader也就是差不多直接跟GPU打交道了,跟Flash的Stage3D(AGAL)类似,不过没有AGAL这么恶心,不需要直接编写汇编语言.而Fragment Shader又跟Fla ...

  6. 〖Linux〗使用sed命令修改小端(little endian)存储的数据

    #!/bin/bash - #=============================================================================== # # F ...

  7. VTK中导入并显示STL、3DS文件

    VTK(visualization toolkit)是一个开源的免费软件系统,主要用于三维计算机图形学.图像处理和科学计算可视化.VTK是在三维函数库OpenGL 的基础上采用面向对象的设计方法发展起 ...

  8. Linux指令范例速查手册

    linux命令繁多,命令就是AK的子弹,对上口径,百发百中! 无意发现一本介绍Linux命令的手册--->[Linux指令范例速查手册] 下载: https://pan.baidu.com/s/ ...

  9. Linux下ls与cp命令

    Linux熟练的应用命令,才可以随心所欲~ ls 注意: ls -1   //每次只列出1个文件 cp 注意: cp -u  xxx xxx  //注意修改时间的先后

  10. Android 百度鹰眼轨迹SDK(v2.1.6)

    闲聊 看过<鹰眼追击>这部电影的读者一定对"鹰眼"这台巨无霸计算机印象深刻,如今我们能够实现自己的鹰眼. 效果图 本篇为百度地图SDK第三篇博文 第一篇实现:Andro ...