相信使用POI的目前已经非常多了,我这边提供一个非常简单便利又通用的POI解析工具类,代码最后有示例代码。可以按照本文直接使用。
import java.io.FileInputStream;
import java.io.FileNotFoundException;
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 java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFDateUtil;
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;
/**
*
* Title: ExcelReader<br>
* Description: 可以读取xls,xlsx等文件<br>
* Copyright @ 2012~2016 xiaour.github.com .All rights reserved.<br>
* @author 小鱼儿
* @createDate 2016年8月23日
* @version v1.0
*/
public class ExcelReader {
private POIFSFileSystem fs;
private HSSFWorkbook wb;
private HSSFSheet sheet;
private HSSFRow row;
private static Logger logger = LogManager.getLogger(ExcelReader.class);
private String fileFullPath;
private int sheetNo;
public ExcelReader(String fileFullPath, int sheetNo) {
super();
this.fileFullPath = fileFullPath;
this.sheetNo = sheetNo;
}
/**
* 读取Excel数据内容
* @param InputStream
* @param sheetNo sheet 页号
* @return Map 包含单元格数据内容的Map对象
*/
public List<Map<String,Object>> readExcel() {
logger.info("开始解析xls...");
sheetNo--;//从1开始及从0开始
InputStream is = null;
try {
is = new FileInputStream(fileFullPath);
} catch (FileNotFoundException e1) {
logger.error(e1);
}
Map<String,Object> dataMap = null;
List<Map<String,Object>> dataList= new ArrayList<>();
String value = "";
try {
fs = new POIFSFileSystem(is);
wb = new HSSFWorkbook(fs);
} catch (IOException e) {
logger.error(e);
}
sheet = wb.getSheetAt(sheetNo);
row = sheet.getRow(0);
// 标题总列数
int colNum = row.getPhysicalNumberOfCells();
String[] keyArray = new String[colNum];
for (int i = 0; i < colNum; i++) {
keyArray[i] = getCellFormatValue(row.getCell((short) i));
}
int rowNum = sheet.getLastRowNum();
// 正文内容应该从第二行开始,第一行为表头的标题
for (int i = 2; i <= rowNum; i++) {
dataMap= new HashMap<>();
row = sheet.getRow(i);
if(row!=null){
int j = 0;
while (j < colNum) {
//这里把列循环到Map
if(row.getCell((short) j)!=null){
value = getCellFormatValue(row.getCell((short) j)).trim();
dataMap.put(keyArray[j],value);
}
j++;
}
value = "";
dataList.add(dataMap);
}
}
logger.info("解析xls完成...");
try {
if(is!=null)
is.close();
} catch (IOException e) {
logger.error(e.toString());
}
return dataList;
}
/**
* 根据HSSFCell类型设置数据
* @param cell
* @return
*/
private String getCellFormatValue(HSSFCell cell) {
String cellvalue = "";
if (cell != null) {
// 判断当前Cell的Type
switch (cell.getCellType()) {
// 如果当前Cell的Type为NUMERIC
case HSSFCell.CELL_TYPE_NUMERIC:
case HSSFCell.CELL_TYPE_FORMULA: {
// 判断当前的cell是否为Date
if (HSSFDateUtil.isCellDateFormatted(cell)) {
Date date = cell.getDateCellValue();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
cellvalue = sdf.format(date);
}
// 如果是纯数字
else {
// 取得当前Cell的数值
DecimalFormat df = new DecimalFormat("0");
String dfStr = df.format(cell.getNumericCellValue());
cellvalue = dfStr;
}
break;
}
// 如果当前Cell的Type为STRIN
case HSSFCell.CELL_TYPE_STRING:
// 取得当前的Cell字符串
cellvalue = cell.getRichStringCellValue().getString();
break;
// 默认的Cell值
default:
cellvalue = " ";
}
} else {
cellvalue = "";
}
return cellvalue;
}
public static void main(String[] args) {
List<Map<String, Object>> dataList;
// 对读取Excel表格标题测试
ExcelReader excelReader = new ExcelReader("D:\\okcoin-2016-08-3XZS.xls",1);
dataList = excelReader.readExcel();
for(Map<String,Object> theMap:dataList){
System.out.println(theMap);
}
}
}
这个类导入相应的jar之后就可以用了,
相关推荐
通过Java Poi 解析EXCEL数据,内附实现代码,绝对可以用。要分不为别的,只为能给个评论。
使用poi解析excel文件,并将数据写入到数据库 项目说明 这个项目实现的功能是读取excel文件中的数据,解析并写入数据库。 读取的excel文件位于项目目录下的 excel\0805.xlsx 使用IntelliJ IDEA开发此项目 使用MYSQL...
java技术,利用工具类poi解析Excel文档示例
poi-3.16(Java解析Excel),网上的资源很多,但是积分也需要很多,这里纯分享!已经调整所需积分!
通过poi解析Excel示例
Java用poi读取excel文件Java用poi读取excel文件Java用poi读取excel文件
利用 Apache POI 对 excel 操作并存入MySQL数据库的一个小demo。
大家都知道用Jave解析Excel要用到POI的jar包,但是在POI版本是5.0.0的时候,用到的jar包不止是一个poi的包,用到了8个jar包,少一个项目都会报找不到类的错,运行不起来,这个压缩包的里面的jar直接全部复制拿去用
采用poi3.8解析excel文件,内含实例代码和jar包
一个解单的java工程,利用poi解析excel.下载代码直接可以运行。
POI java解析EXCEL框架 jar
Java使用poi的jar包解析excel,里面有个ExcelUtil工具类, 非常实用,里面有main函数可以测试,导入到eclipse里面就可以运行, 有测试excel文件,需要的jar都在里面, 导入就可以运行.
在项目中,需求是用Java-poi技术生成带有图片的Excel文档,从网上找了很多资源,都不尽人意。想把自己调通的代码给大家分享一下,为了避免大家多走弯路,好了,废话不多说,请看代码!
java 解析excel 导出 excel,最新版本的poi 里面目前POI的最新发布版本是3.10_FINAL.该版本保护的jar包有:poi commons-logging, commons-codec, log4j poi-version-yyyymmdd.jar poi-scratchpad poi poi-...
JAVA POI Excel转Html,代码和所需的jar都在压缩包,项目在线预览需求,实现后分享下
apache poi解析Excel时报错,我将Excel打开后保存,就不会报错,我将重写的类从新打包这样问题虽然网上有解决方案,但是需要自己打包重写对应类,我已将这些步骤做好了。
poi解析excel用到的jar包 java解析excel用到的jar包 压缩包中包含: poi-3.7.jar poi-ooxml-3.7.jar poi-ooxml-schemas-3.7.jar
1.不分版本,2003/2007完美解析 2.调用方便 3.输出直观 4.解析excel工程demo
自己写的一个poi解析excel 的工具类。里面有些实用的方法,满足基本的解析要求了。
使用poi读取写入复杂excel内容包括样式,工具类