• 大小: 23KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-05-13
  • 语言: Java
  • 标签: Java  POI  Excel  

资源简介

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.xml
     文件        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

评论

共有 条评论