Java入门开发POI读取导入Excel文件
Apache POI是Apache开发的开源的跨平台的 Java API,提供API给Java程序对Microsoft Office格式档案进行各种操作。
POI中Excel操作很简单,主要类有
- HSSFWorkbook:Excel文件
- HSSFSheet:Excel文件内的分页sheet
- HSSHRow:行
- HSSFCell:单元格
我们想导入读取并验证单元格的数据,如下:
excel内容:


开发实例:
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.text.DecimalFormat;
import java.text.ParseException; 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.poifs.filesystem.POIFSFileSystem;
import org.apache.struts.upload.FormFile; public class POIImport { // 导入并验证文件File_Import.xls public static void main(String[] args) { // 用Struts导入文件:
// FormFile formFile = batchChangeAGForm.getXlsfile();
//
// if (0 == formFile.getFileSize()) {
// this.setPromptMessage(request, "选择的文件有误!");
// return mapping.findForward("batchChangeAGImport");
// }
// InputStream is = formFile.getInputStream(); // 直接读取文件:
String filePath = "D:\\File_Import.xls";
File file = new File(filePath);
InputStream is;
HSSFSheet sheetMain; try {
is = new FileInputStream(file);
POIFSFileSystem fs = new POIFSFileSystem(is);
HSSFWorkbook wb = new HSSFWorkbook(fs);
// 读取第一个Sheet
sheetMain = wb.getSheetAt(0);
is.close(); // 总共的行数
int rowLens = sheetMain.getLastRowNum();
int colLens = 8;
int errCnt = 0;
HSSFRow row = null;
HSSFCell cell = null;
String content = ""; for (int rowCount = 1; rowCount <= rowLens; rowCount++) {
System.out.println("读取行:" + rowCount);
row = sheetMain.getRow(rowCount);
if (row != null) { for (int colCount = 0; colCount < colLens; colCount++) {
System.out.print("行 :" + rowCount + ";列 :" + colCount
+ "的内容:");
cell = row.getCell((short) colCount);
content = getCellValue(cell).trim();
if (content == "") {
System.out.println("### 发现空异常 ###");
} else {
System.out.println(content);
}
}
}
} } catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
} public static String getCellValue(HSSFCell cell) {
if (cell != null) {
switch (cell.getCellType()) {
case HSSFCell.CELL_TYPE_BLANK:
return "";
case HSSFCell.CELL_TYPE_NUMERIC:
String strValue = String.valueOf(cell.getNumericCellValue());
if (strValue != null && strValue.indexOf(".") != -1
&& strValue.indexOf("E") != -1) {
try {
return new DecimalFormat().parse(strValue).toString();
} catch (ParseException e) {
e.printStackTrace();
}
} else {
if (strValue.endsWith(".0")) {
return strValue.substring(0, strValue.indexOf(".0"));
} else {
return strValue;
}
}
case HSSFCell.CELL_TYPE_STRING:
return (cell.getStringCellValue() + "").trim();
case HSSFCell.CELL_TYPE_FORMULA:
return (cell.getCellFormula() + "").trim();
case HSSFCell.CELL_TYPE_BOOLEAN:
return cell.getBooleanCellValue() + "";
case HSSFCell.CELL_TYPE_ERROR:
return cell.getErrorCellValue() + "";
}
}
return "";
}
}
输出:
读取行:1
行 :1;列 :0的内容:A000079
行 :1;列 :1的内容:000002017106088
行 :1;列 :2的内容:2
行 :1;列 :3的内容:2
行 :1;列 :4的内容:10000
行 :1;列 :5的内容:1000
行 :1;列 :6的内容:20171020
行 :1;列 :7的内容:已发放
读取行:2
行 :2;列 :0的内容:A000080
行 :2;列 :1的内容:000002018107088
行 :2;列 :2的内容:1
行 :2;列 :3的内容:1
行 :2;列 :4的内容:20000
行 :2;列 :5的内容:2000
行 :2;列 :6的内容:20181020
行 :2;列 :7的内容:待发
读取行:3
行 :3;列 :0的内容:A000081
行 :3;列 :1的内容:000002018107099
行 :3;列 :2的内容:1
行 :3;列 :3的内容:1
行 :3;列 :4的内容:### 发现空异常 ###
行 :3;列 :5的内容:3000
行 :3;列 :6的内容:20181020
行 :3;列 :7的内容:待发
Java入门开发POI读取导入Excel文件的更多相关文章
- POI读取/写入Excel文件
import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io ...
- poi批量导入excel文件
package com.practice.util; import java.io.File; import java.io.FileInputStream; import java.io.FileN ...
- Java POI导入Excel文件
今天在公司需要做个导入Excel文件的功能,所以研究了一下,参考网上的一些资料总算是做出来了,在此记录一下防止以后忘记怎么弄. 本人用的是poi3.8,所以需要的JAR包如下: poi-3.8.jar ...
- java如何导入Excel文件
Java使用POI导入Excel文件,操作起来比较简单,支持xlsx格式. 下载POI资源包 从官网https://poi.apache.org/下载POI,笔者选择的是版本是3.17,下载后文件名是 ...
- java后端导入excel模板和导入excel文件去读数据
模板转载地址:https://www.cnblogs.com/zhangyangtao/p/9802948.html 直接上代码(我是基于ssm写的demo,导入文件目前只能读取.xls后缀的exce ...
- Java解析导入Excel文件后台代码实现
使用MultipartFile上传Excel文件后端代码实现:(springmvc下的spring-webmvc (MultipartFile )上传) 由于POST一个包含文件上传的Form会以mu ...
- .Net MVC 导入导出Excel总结(三种导出Excel方法,一种导入Excel方法) 通过MVC控制器导出导入Excel文件(可用于java SSH架构)
.Net MVC 导入导出Excel总结(三种导出Excel方法,一种导入Excel方法) [原文地址] 通过MVC控制器导出导入Excel文件(可用于java SSH架构) public cl ...
- Apache POI 一键上传(导入excel文件到数据库)
import cn.XXXX.bos.utils.PinYin4jUtils; import org.apache.commons.lang3.StringUtils; // HSSF:操作07版本之 ...
- Spring Boot下的一种导入Excel文件的代码框架
1.前言 Spring Boot下如果只是导入一个简单的Excel文件,是容易的.网上类似的文章不少,有的针对具体的实体类,代码可重用性不高:有的利用反射机制或自定义注解,开发了Excel导入工具 ...
随机推荐
- 2019.01.22 zoj3583 Simple Path(并查集+枚举)
传送门 题意简述:给出一张图问不在从sss到ttt所有简单路径上的点数. 思路: 枚举删去每个点然后把整张图用并查集处理一下,同时不跟sss和ttt在同一个连通块的点就是满足要求的点(被删去的不算). ...
- C++中string的使用
概述 这篇博文为了记录C++中string的使用,用到一点补充一点. 预备 使用string之前需要包含头文件 #include<iostream> #include<string& ...
- .NET 开源GIS项目
SharpMapSharpMap是一个基于.NET 2.0使用C#开发的Map渲染类库,可以渲染ESRI Shape.PostGIS.MS SQL等格式的GIS数据,通过扩展地图数据Provider, ...
- C#-ado.net学习笔记-会有更新
ado.net 通用类对象.在本地内存暂存数据 托管类对象.让本地通用类对象连接数据库,让本地通用类对象和数据库同步 连接数据库 new connection(connectstring) comma ...
- (01背包)Buy the souvenirs (hdu 2126)
http://acm.hdu.edu.cn/showproblem.php?pid=2126 Buy the souvenirs Time Limit: 10000/1000 MS (Java/Oth ...
- 中国移动物联网平台数据转发 c# 控制台程序
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.N ...
- Android 模仿微信发送图片 钟罩效果
参考资料http://trylovecatch.iteye.com/blog/1189452 http://bbs.51cto.com/thread-1031415-1.html### 1.添加资源文 ...
- 用mysql workbench导出mysql数据库关系图
用mysql workbench导出mysql数据库关系图 1. 打开mysql workbench,选择首页中间"Data Modeling"下方的第二栏"Create ...
- nutch从搜索引擎到网络爬虫
人物介绍 姓名:DougCutting 个人名望:开发出开源全文检索引擎工具包Lucene. 个人简介/主要荣誉:除了 Lucene,还开发了著名的网络爬虫工具 Nutch,分布式系统基础架构Hado ...
- hdu 5094 状压bfs+深坑
http://acm.hdu.edu.cn/showproblem.php?pid=5094 给出n*m矩阵 给出k个障碍,两坐标之间存在墙或门,门最多10种,状压可搞 给出s个钥匙位置及编号,相应的 ...