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导入工具 ...
随机推荐
- 【转】使用PHP导入和导出CSV文件
项目开发中,很多时候要将外部CSV文件导入到数据库中或者将数据导出为CSV文件,那么具体该如何实现呢?本文将使用PHP并结合mysql,实现了CSV格式数据的导入和导出功能.我们先准备mysql数据表 ...
- windows下解决端口被占用的问题
步骤一.Windows查看所有的端口 点击电脑左下角的开始,然后选择运行选项,接着我们在弹出的窗口中,输入[cmd]命令,进行命令提示符.然后我们在窗口中输入[netstat -ano]按下回车,即会 ...
- 1.2OpenCV如何扫描图像,利用查找表和计时
查找表 颜色缩减法:如果矩阵元素存储的是单通道像素,使用C或C++的无符号字符类型,那么像素可有256个不同值. 但若是三通道图像,这种存储格式的颜色数就太多了(确切地说,有一千六百多万种).用如此之 ...
- 通过html文件生成PDF文件
/// <summary> /// 获取html内容,转成PDF(注册) /// </summary> public void DownloadPDFByHTML(string ...
- @RequestBody jackson解析复杂的传入值的一个坑;jackson解析迭代数组;jackson多重数组;jakson数组
一.实际开发的一个问题. 传入一个json数组,数组中还嵌套数组,运用springboot+Jpa框架,@RequestBody注解传入数据 Controller @ApiOperation(valu ...
- ubuntu16.04 编译安卓4.2
1. root@ge-Lenovo:/usr/lib/jvm# cd /home/material/install/jdk/ jdk-6u29-linux-x64.bin jdk-6u45-l ...
- JavaScript相关基础知识点
JavaScript简介: JavaScript是脚本语言,是一种轻量级的编程语言,是可插入 HTML 页面的编程代码,插入 HTML 页面后,可由所有的现代浏览器执行. JavaScript使用: ...
- 3.java面向对象编程三大特性之多态
面向对象编程的三大特性:封装.继承.多态 封装隐藏了类的内部实现机制,可以在不影响使用的情况下改变类的内部结构,同时也保护了数据.对类的外部而言它的内部实现细节是隐藏的,暴露给外界的只是它的实现方法. ...
- MEAN 27
添加评论主题页,在26的基础上. 新建了很多文件 Error: Cannot find module './controllers/customers_c' 解决办法:../ 接下来做function ...
- 保存到Excel文件中
OLEObject ole_object , ole_workbooks ole_object = CREATE OLEObjectIF ole_object.ConnectToNewObject(& ...