/**
*
* @param filePath 文件路径
* @param clazz 存放的数据是那个对象的数据:类似User.class
* @param field 标题中那个标题对应那个对象中的那个字段:map.add("Excel标题", "user的字段值")
* @return
*/
private static List getExcel(String filePath, Class clazz,
Map<String, String> field) {
if (!filePath.endsWith("xls")) {
System.out.println("文件不是Excel");
return null;
}
List list = new ArrayList();
Workbook wk = null;
try {
wk = Workbook.getWorkbook(new File(filePath));
Sheet sheet = wk.getSheet(0);
Map<Integer, String> columnMap = readTitle(field, sheet.getRow(0));
if (columnMap == null || columnMap.size() == 0) {
System.out.println("没有查到相应的标题");
return null;
}
for (int i = 1; i < sheet.getRows(); i++) {
Cell[] cells = sheet.getRow(i);
if (cells.length == 0)
continue;
Set<Map.Entry<Integer, String>> set = columnMap.entrySet();
Object obj = clazz.newInstance();
for (Iterator<Map.Entry<Integer, String>> iter = set.iterator(); iter
.hasNext();) {
Map.Entry<Integer, String> entry = iter.next();
String fieldValue = cells[entry.getKey()].getContents()
.trim();
String fieldName = entry.getValue();
invokeMethod(clazz, obj, fieldName, fieldValue);
}
list.add(obj);
}
} catch (Exception e) {
e.printStackTrace();
return null;
} finally {
if (wk != null)
wk.close();
}
return list;
}
private static Object invokeMethod(Class<?> clazz, Object instance,
String fileName, String fieldValue) throws Exception {
Method getMethod = clazz.getMethod("get" + toFirstUpper(fileName));
Class<?> paraType = getMethod.getReturnType();
Method setMethod = clazz.getMethod("set" + toFirstUpper(fileName),
paraType);
Object value = transfType(paraType, fieldValue);
if (value != null)
setMethod.invoke(instance, value);
return instance;
}
private static Object transfType(Class<?> paraType, String target) {
Object result = null;
if (paraType == String.class) {
result = target;
} else if (paraType == Double.class) {
result = new Double(Double.parseDouble(target));
} else if (paraType == double.class) {
result = Double.parseDouble(target);
} else if (paraType == boolean.class) {
result = Boolean.parseBoolean(target);
} else if (paraType == Boolean.class) {
result = Boolean.valueOf(target);
} else if (paraType == int.class) {
result = Integer.parseInt(target);
} else if (paraType == Integer.class) {
result = Integer.decode(target);
} else if (paraType == long.class) {
result = Long.parseLong(target);
} else if (paraType == Long.class) {
result = Long.decode(target);
} else if (paraType == float.class) {
result = Float.parseFloat(target);
} else if (paraType == Float.class) {
result = Float.valueOf(target);
}
return result;
}
public static String toFirstUpper(String str) {
return str.replaceFirst(str.substring(0, 1), str.substring(0, 1)
.toUpperCase());
}
private static Map<Integer, String> readTitle(Map<String, String> fieldMap,
Cell[] cells) {
Map<Integer, String> columnMap = new HashMap<Integer, String>();
for (int i = 0; i < cells.length; i++) {
String content = cells[i].getContents().trim();
String field = fieldMap.get(content);
if (field != null) {
columnMap.put(i, field);
}
}
return columnMap;
}
相关推荐
本文将深入探讨如何使用Java来处理Excel,并特别关注如何将List对象导出为Excel文件。 首先,我们需要一个库来操作Excel,Apache POI是一个广泛使用的开源Java API,专门用于读写Microsoft Office格式的文件,包括...
Excel源代码,导入导出各种工具类 <groupId>org.apache.poi <artifactId>poi <groupId>org.apache.poi <artifactId>poi-scratchpad 代码实例: String path = ""; byte[] bytes; vo.setCurrentPage(0); vo....
在Java编程中,将Excel数据导入到一个List中,其中每一行数据表示为一个List,是一种常见的数据处理需求。这种操作对于数据分析、数据存储或数据传输等场景非常实用。下面我们将详细讨论如何实现这个功能,以及涉及...
在Java编程中,将Excel数据导入到MySQL数据库是一项常见的任务,尤其在数据处理和分析的场景下。要完成这个过程,我们需要使用特定的库来读取Excel文件,并使用JDBC(Java Database Connectivity)来与MySQL数据库...
一个实用的java导入导出Excel工具类,基于开源的Java Excel API(JXL)纯java类库实现,Windows和Linux系统下均可使用。 主要实现功能如下: 导出:将List转化为Excel(listToExcel)。 导入:将Excel转化为List...
java对Excel表格数据处理并以List集合返回(只要传Excel文件路径即可)
Java 实现 Excel 导入导出是指使用 Java 语言编写程序来实现将 Excel 文件中的数据导入到 Java 程序中,并将 Java 程序中的数据导出到 Excel 文件中。这种操作可以使用 Apache POI 库来实现。 POI 库简介 Apache ...
这个"java_poi导入excel通用工具类"是利用Java的POI库和一些额外的技术来实现对Excel数据的导入功能,使得开发人员能够方便地将Excel数据转化为Java对象或者对已有对象进行填充。下面我们将深入探讨相关的知识点。 ...
### Java大批量导入Excel:多线程加分片处理详解 #### 概述 在实际工作中,经常需要批量处理大量的Excel数据。当面对成千上万甚至百万级别的数据时,简单的单线程处理方式往往无法满足效率的需求。为了解决这个...
在Java编程中,处理Excel文件是一项常见的任务,特别是在数据导入和导出的场景下。...这个"java导入Excel的同时导入图片-测试demo"应该包含了一个完整的示例,演示了上述步骤,你可以根据这个示例代码进行学习和实践。
2. `List<?> importExcel(InputStream is, int sheetIndex, Class<T> clazz)`: 这个方法用于导入Excel,`is`是输入流,`sheetIndex`是工作表索引,`clazz`是你期望的数据类型。 在实际应用中,你还需要考虑一些特殊...
JAVA中excel导入导出通用方法 JAVA 中 excel 导入导出通用方法是指在 Java 项目中实现 excel 文件的导入和导出功能。这种方法可以应用于各种需要 excel 文件交互的业务场景中。 一、引入依赖 在 Java 项目中想要...
- **数据预处理**:读取Excel数据到Java集合,如List, Object>>,每个Map代表一行记录,键为列名,值为列值。 - **建立数据库连接**:使用JDBC(Java Database Connectivity)建立到目标数据库的连接。 - **预...
本文将详细介绍如何使用Jxls实现数据导入Excel的实例。 Jxls库的核心功能在于提供了一种声明式的方式来处理Excel模板,通过使用Apache POI库来操作Excel文件。它的主要优点是将数据和样式分离,让开发者可以专注于...
java 导出,导入excel。用户自定义导出模板。模板显示内容用el表达式即可。用户可以定义每一个单元格的显示内容。可以自定义List数据的展示。一个excel的sheet内,可以有多个list的数据循环
在Java编程环境中,导入Excel数据是一项常见的任务,特别是在数据分析、报表处理或系统集成等领域。Excel文件,特别是.xlsx格式(属于Microsoft Office Open XML标准)和.xls格式(属于旧版的BIFF格式),通常包含...
这篇博文链接虽然没有提供具体内容,但我们可以根据“java_poi导入excel”这个主题深入探讨Java POI库在Excel导入方面的应用。 首先,Java POI 提供了HSSF(用于老版本的BIFF格式,如.xls)和XSSF(用于新版本的...
2. **导入Excel** 创建一个`ExcelImporter`类,用于读取Excel并映射到实体对象: ```java public List<Student> importExcel(InputStream inputStream) { Workbook workbook = new SXSSFWorkbook(inputStream); /...
在Spring Boot应用中,导入Excel文件并将数据存储到数据库是一项常见的任务,特别是在处理批量数据时。下面我们将详细探讨如何在Spring Boot项目中实现这个功能,涉及的主要知识点包括Spring的文件上传、Excel数据...
Java基于POI的导入导出excel功能,附带测试功能,项目基于Maven,导入即可用,带测试Main方法提供例子。 用于导入导出Excel的Util包,基于Java的POI。可将List导出成Excel,或读取Excel成List、Map,Object>,很方便...