前阵子,项目中的一小模块,需要加上数据导入的功能。由于项目有好几个地方需要用到excel的数据导入。因此,当时就想了将excel导入封装成一公共组件,由于不同的excel数据导入,具体入库操作不同。因此,此组件提供对导入的数据的读取。具体不同的入库操作,在具体实现类中进行!
于是得出了 excel数据导入的抽象类
直接上代码:
读取excel方法
public List<List<Object>> readFormExcel(File file, int startRow,
int startColumn) throws Exception {
List<List<Object>> list = new ArrayList<List<Object>>();
Workbook workbook = null;
if (file.getName().toUpperCase().endsWith(".XLS")) {
workbook = createWorkBook(file);
} else {
workbook = createWorkbook2007(file);
}
Sheet sheet = workbook.getSheetAt(0);
if (sheet == null) {
throw new IllegalArgumentException("导入的数据必须是放要第一个工作表");
}
int rowNumbers = sheet.getLastRowNum();
if (startRow > rowNumbers) {
throw new IllegalArgumentException("起始行数大于导入的数据最大行数");
}
int headColumnCount = sheet.getRow(0).getLastCellNum();
for (int i = startRow; i <= rowNumbers; i++) {
Row row = sheet.getRow(i);
if (row == null) {
continue;
}
int columnNumber = row.getLastCellNum();
if (columnNumber < headColumnCount) {
columnNumber = headColumnCount;
// ,如果有表头有3列,另一行有2列,则读到2列时,最后列为2列.而不是3列.为数据完整性..方便做循环,将之改为与表头相同列
}
List<Object> cellList = new ArrayList<Object>();
for (int j = startColumn; j < columnNumber; j++) {
Cell cell = row.getCell(j);
if (cell == null) {
cellList.add("");
continue;
}
Object value = null;
switch (cell.getCellType()) {
case Cell.CELL_TYPE_BLANK: {
value = "";
cellList.add(value);
break;
}
case Cell.CELL_TYPE_FORMULA: {
value = cell.getCellFormula();
cellList.add(value);
break;
}
case Cell.CELL_TYPE_NUMERIC: {
if (workbook instanceof HSSFWorkbook) {
if (HSSFDateUtil.isCellDateFormatted(cell)) {
value = cell.getDateCellValue();
cellList.add(value);
} else {
value = cell.getNumericCellValue();
cellList.add(value);
}
} else {
if (DateUtil.isCellDateFormatted(cell)) {
value = cell.getDateCellValue();
cellList.add(value);
} else {
value = cell.getNumericCellValue();
cellList.add(value);
}
}
break;
}
case Cell.CELL_TYPE_STRING: {
value = cell.getRichStringCellValue().getString();
cellList.add(value);
break;
}
case Cell.CELL_TYPE_BOOLEAN: {
value = cell.getBooleanCellValue();
cellList.add(value);
break;
}
default: {
value = cell.getRichStringCellValue().getString();
cellList.add(value);
break;
}
}
}
list.add(cellList);
}
return list;
}
客户端调用方法
/**
*
* @param file
* execute文件
* @param startRow
* 起始行
* @param startColumn
* 起始列
* @param requestData
* 客户端请求的数据
* @return 返回导入的行数
* @throws Exception
*/
public int executeDataImport(File file, int startRow, int startColumn,
Map<String, Object> requestData) throws Exception {
String text = file.getName();
List<List<Object>> importDatas = readFormExcel(file, startRow,
startColumn);
if (importDatas == null || importDatas.size() == 0) {
return 0;
}
int resultCount = processBatchData(importDatas, requestData);
return resultCount;
}
实际入库抽象方法
/**
*
* @param importDatas
* excel数据
* @param requestData
* 客户端请求数据
* @return
*/
public abstract int processBatchData(List<List<Object>> importDatas,
Map<String, Object> requestData);
分享到:
相关推荐
前几天项目上需要加上导入导出,在网上找了一下,么有...于是自己写,源码里所需要的jar都有,从jsp界面进行Excel的导入导出,并可用于上传和下载。如有所用,喜不自禁,分享,开源的意义。 写的不是特别好,不喜勿喷!
本项目结合了Spring Boot、MyBatis、Apache POI和MySQL,实现了Excel数据的导入导出功能,这对于数据处理和分析尤其有用。下面我们将深入探讨这些技术及其在项目中的应用。 首先,Spring Boot以其“约定优于配置”...
下面将详细介绍如何使用Java POI对Excel进行导入和导出。 首先,导入必要的POI库。在Maven项目中,你需要在pom.xml文件中添加以下依赖: ```xml <groupId>org.apache.poi <artifactId>poi <version>4.1.2 ...
在本项目中,我们将探讨如何利用POI技术和SSM框架将Excel数据有效地导入MySQL数据库。 首先,我们需要了解Apache POI库。POI是一个开源的Java API,它允许我们读取、创建、修改Excel文件。通过使用POI,我们可以...
Java POI 实现 Excel 导入导出 Java POI 是一个流行的 Java 库,用于处理 Microsoft Office 文件格式,包括 Excel 文件。在本文中,我们将详细介绍如何使用 Java POI 实现 Excel 导入导出功能。 1. 什么是 Java ...
总结来说,这个项目展示了如何利用Java的Apache POI库读取Excel数据,结合XML解析进行数据验证,最后将验证通过的数据导入到数据库。这个过程涉及到文件I/O、XML处理、数据验证、数据库操作等多个核心Java技术,对于...
基于Java反射机制的POI实现Excel数据导入_导出.pdf 本文主要介绍了基于Java反射机制的POI实现Excel数据导入和导出的技术。该技术通过采用Java反射机制和自定义注解原理,实现了数据库与Excel文件之间的数据交互。...
在IT行业中,将Excel数据批量导入MySQL数据库是一项常见的任务,特别是在数据分析、报表生成或系统迁移等场景下。本文将详细讲解如何使用Apache POI库处理Excel文件,并通过Java的JDBC接口将数据批量插入到MySQL...
在本文中,我们将详细探讨如何使用Apache POI 2008-12-01版本的库来实现Excel 2007(.xlsx格式)文件的导入操作。 首先,Excel 2007引入了一种新的文件格式,称为OpenXML,它使用ZIP压缩存储数据,这与之前的二进制...
"POI导入Excel知识点" POI简介 Apache POI是一个开源的Java库,用于处理Microsoft Office文档,包括Excel、Word、PowerPoint等。POI提供了一个纯Java的解决方案,用于读取、写入和操作Office文档。 POI中的Excel...
poi实现导入数据到excel模板,本来想上传poi的jar包,谁知限制我只能上传15M的文件,汗。。。。。 不知道啥时候开始要分了... 代码见: https://github.com/thisisnohi/nohi-doc poi实现导入数据到excel模板。...
Java中的Apache POI库是用于读取和...通过以上策略,可以有效地处理Java POI在导入大数据量Excel时的内存溢出问题,同时提高程序的运行效率。在实践中,应根据具体场景选择合适的优化方法,确保程序的稳定性和性能。
在这个"利用POI解析excel并存入数据库demo"中,我们将关注如何使用 POI 库来读取 Excel 文件,并将数据有效地存入 MySQL 数据库。 首先,要开始使用 POI,你需要在你的项目中引入相应的依赖。如果你使用的是 Maven...
测试数据可以用来验证导入导出的正确性,而说明文档则指导用户如何运行程序,如何配置参数,以及如何处理可能出现的问题。 总之,这个项目是一个完整的Java解决方案,用于处理Excel文件的导入导出,同时具备用户...
该文件中包含了所有java项目中...将该zip解压后,将jar包加入到自己的项目中,可以直接通过poi的api在excel和项目数据进行导入导出。 应用场景:如 excel格式对账单导出,将数据库数据导出到excel中(带样式字体等)。
这篇博文可能是介绍如何利用POI进行Excel数据的导入和导出操作。 在Java开发中,Apache POI是一个非常实用的工具,特别是在数据处理、报表生成和自动化测试等领域。以下是使用POI进行Excel操作的一些关键知识点: ...
在进行批量导入和导出Excel数据时,Apache POI是一个非常实用的选择。以下是关于使用Java POI进行Excel操作的关键知识点: 1. **Apache POI介绍**: Apache POI是一个开源项目,它提供了API来处理Microsoft的文件...
综上所述,"SSM框架利用poi导入导出Excel文件 demo"项目展示了如何在Java Web应用中集成SSM框架,利用Apache POI库实现Excel文件与数据库之间的数据交换。通过理解这个示例,开发者可以学习到SSM框架的实战技巧以及...