资源简介
Java操纵POI解析Excel表,根据表头将内容储存。通过实体类set、get方便其它方法引用

代码片段和文件信息
package com.cn.excel;
import java.io.File;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellType;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Row.MissingCellPolicy;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.WorkbookFactory;
public class Test {
public static void main(String[] args) {
List testList = load(“src/main/resources/test.xlsx“ “工作表1“ TestPo.class);
for (int i = 0; i < testList.size(); i++) {
System.out.print(“【“ + testList.get(i).getNo() + “】“);
System.out.print(“【“ + testList.get(i).getName() + “】“);
System.out.print(“【“ + testList.get(i).getValue() + “】“);
System.out.println();
}
}
/**
* 解析Excel表
*
* @param excelPath
* 文件路径
* @param sheetName
* 工作表名
* @param clazz
* 实体类
* @return
*/
public static List load(String excelPath String sheetName Class clazz) {
List list = new ArrayList();
try {
// 创建workbook对象
Workbook workbook = WorkbookFactory.create(new File(excelPath));
// 获取表单sheetName
Sheet sheet = workbook.getSheet(sheetName);
// 获取第一行
Row titleRow = sheet.getRow(0);
// 获取最后一列列号(列数)
int lastCellNum = titleRow.getLastCellNum();
String[] fields = new String[lastCellNum];
// 循环处理每一列取出每一列的字段名保存到数组(处理表头)
for (int column = 0; column < lastCellNum; column++) {
Cell cell = titleRow.getCell(column MissingCellPolicy.CREATE_NULL_AS_BLANK);
cell.setCellType(CellType.STRING);
String title = cell.getStringCellValue();
title = title.substring(0 title.indexOf(“(“));
fields[column] = title;
}
// 获取最后一列行号
int lastRowIndex = sheet.getLastRowNum();
// 循环处理每一个数据行
for (int row = 0; row <= lastRowIndex; row++) {
T obj = clazz.newInstance();
// 拿到一个数据行
Row dataRow = sheet.getRow(row);
if (dataRow == null || isEmptyRow(dataRow)) {
continue;
}
// 拿到此数据行上的每一列
for (int column = 0; column < lastCellNum; column++) {
Cell cell = dataRow.getCell(column MissingCellPolicy.CREATE_NULL_AS_BLANK);
cell.setCellType(CellType.STRING);
String value = null;
// 获取单元格的值
value = getCellValue(cell);
if (isMergedRegion(sheet row column)) {
value = getMergedRegionValue(sheet row column);
}
// 获取要反射的方法
String methodName = “set“ + fields[column];
// 获取要反射的方法对象
Method method = clazz.getMethod(methodName String.class);
// 完成反射调用
method.invoke(obj value);
}
list.add(obj);
}
} catch (Exception e) {
e.printStackTrace();
}
return list;
}
/**
* 判断指定的单元格是否是合并单元格
*
* @param sheet 表单
* @param row 行
* @param column 列
* @return
*/
public static boolean isMergedRegion(Sheet sheet int row int column
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2019-01-22 11:50 excelTest\
文件 6148 2019-01-22 11:50 excelTest\.DS_Store
目录 0 2019-01-22 11:50 __MACOSX\
目录 0 2019-01-22 11:50 __MACOSX\excelTest\
文件 120 2019-01-22 11:50 __MACOSX\excelTest\._.DS_Store
文件 550 2019-01-16 11:51 excelTest\pom.xm
文件 1395 2019-01-16 11:49 excelTest\.classpath
目录 0 2019-01-16 11:49 excelTest\.settings\
文件 238 2019-01-16 11:49 excelTest\.settings\org.eclipse.jdt.core.prefs
文件 86 2019-01-16 11:49 excelTest\.settings\org.eclipse.m2e.core.prefs
文件 538 2019-01-16 11:49 excelTest\.project
目录 0 2019-01-16 11:49 excelTest\src\
目录 0 2019-01-16 11:49 excelTest\src\test\
目录 0 2019-01-16 11:49 excelTest\src\test\resources\
目录 0 2019-01-16 11:49 excelTest\src\test\java\
目录 0 2019-01-16 11:49 excelTest\src\main\
目录 0 2019-01-22 11:47 excelTest\src\main\resources\
文件 21355 2019-01-22 11:47 excelTest\src\main\resources\test.xlsx
目录 0 2019-01-22 11:50 __MACOSX\excelTest\src\
目录 0 2019-01-22 11:50 __MACOSX\excelTest\src\main\
目录 0 2019-01-22 11:50 __MACOSX\excelTest\src\main\resources\
文件 188 2019-01-22 11:47 __MACOSX\excelTest\src\main\resources\._test.xlsx
目录 0 2019-01-16 11:50 excelTest\src\main\java\
目录 0 2019-01-16 11:50 excelTest\src\main\java\com\
目录 0 2019-01-16 11:50 excelTest\src\main\java\com\cn\
目录 0 2019-01-22 11:46 excelTest\src\main\java\com\cn\excel\
文件 5265 2019-01-22 11:46 excelTest\src\main\java\com\cn\excel\Test.java
文件 697 2019-01-16 16:48 excelTest\src\main\java\com\cn\excel\TestPo.java
相关资源
- 三角网构TIN生成算法,Java语言实现
- java代码编写将excel数据导入到mysql数据
- Java写的cmm词法分析器源代码及javacc学
- JAVA JSP公司财务管理系统 源代码 论文
- JSP+MYSQL旅行社管理信息系统
- 推荐算法的JAVA实现
- 基于Java的酒店管理系统源码(毕业设
- java-图片识别 图片比较
- android毕业设计
- java23种设计模式+23个实例demo
- java Socket发送/接受报文
- JAVA828436
- java界面美化 提供多套皮肤直接使用
- 在线聊天系统(java代码)
- 基于Java的图书管理系统807185
- java中实现将页面数据导入Excel中
- java 企业销售管理系统
- java做的聊天系统(包括正规课程设计
- Java编写的qq聊天室
- 商店商品管理系统 JAVA写的 有界面
- JAVA开发聊天室程序
- 在linux系统下用java执行系统命令实例
- java期末考试试题两套(答案) 选择(
- JAVA3D编程示例(建模、交互)
- Java 文件加密传输
- java做的房产管理系统
- 基于jsp的bbs论坛 非常详细
- [免费]java实现有障碍物的贪吃蛇游戏
- java Servlet投票实例
- 操作系统作业 (pv,作业管理,等5个
评论
共有 条评论