当向系统中导入数据时,更多的使用是Excel形式的数据导入。在此给个demo。
1、首先是前端界面:
<form action="upload" enctype="multipart/form-data"> <input type="file" name="myFile" /> <input type="submit" value="Upload! " /> </form>
关于这个只需要注意两点:1)enctype属性的值为multipart/form-data 2) type属性的值为file 而对于上述form表单中的name="myFile",则是因为后台需要name属性值作为参数,获取MultipartFile对象。
2、使用multipart请求处理文件上传:
Spring通过对ServletAPI的HttpServletRequest接口进行扩展,使其能够更好的处理文件上传,扩展后的接口名为:org.springframework.web.multipart.MultipartHttpServletRequest(接口提供的方法有public MultipartFile getFile(String name); public Map getFile(); public Iterator getFileNames();)
实际上只要发现一个就表明在控制器实例中存在一个实现MultipartHttpServletRequest接口的requset对象。
MultipartFile multipartFile = request.getFile("myFile")。如果请求中找不到文件,则返回null。
org.springframework.web.multipart.MultipartFile接口提供的方法有:
public byte[] getBytes();
public String getContentType();//获得文件类型
public java.io.InputStream getInputStream();将文件读取为java.io.InputStream流对象
public String getName();
public String getOriginalFilename();
public long getSize();//获取文件长度
public boolean isEmpty();
public void transferTo(java.io.File dest);//用于将上传文件写到服务器指定的文件。
以下实例代码:将Excel文件转换成流信息
public static InputStream getInputStreamFromSingleFile( HttpServletRequest request) throws Exception { MultipartHttpServletRequest multipartHttpServletRequest = (MultipartHttpServletRequest) request; MultipartFile multipartFile = multipartHttpServletRequest .getFile("myFile"); InputStream in = null; if (multipartFile != null && !multipartFile.isEmpty()) { String fileName = multipartFile.getOriginalFilename(); if (POIExcelUtil.isValidFileName(fileName.trim()) && POIExcelUtil.isXlsFileName(fileName.trim())) { in = multipartFile.getInputStream(); } else { throw new BusiException("必须是微软Excel格式文件!"); } } else { throw new BusiException("请选择导入的文件!"); } return in; } /** * 判断是否合法的文件名 * * @param fileName * @return */ public static boolean isValidFileName(String fileName) { if (fileName == null || fileName.length() > 255 || !fileName.contains(".")) return false; else return fileName .matches("[^\\s\\\\/:\\*\\?\\\"<>\\|](\\x20|[^\\s\\\\/:\\*\\?\\\"<>\\|])*[^\\s\\\\/:\\*\\?\\\"<>\\|\\.]$"); } /** * 判断是否合法的Excel文件 * * @param fileName * @return */ public static boolean isXlsFileName(String fileName) { return fileName.matches("^.+\\.(?i)((xls)|(xlsx))$"); }
3、将流信息转换为对象
InputStream inputStream = POIExcelUtil.getInputStreamFromSingleFile(request); if (inputStream != null) {// 上传文件 HSSFRow row = null; HSSFWorkbook wb = new HSSFWorkbook(inputStream); HSSFSheet sheet = wb.getSheetAt(0); int totalRows = sheet.getLastRowNum(); if (totalRows < 1) { throw new BusiException("导入数据为空!"); } if (totalRows > 10000) { throw new BusiException("导入数据最多为10000条!"); } List<People> list = new ArrayList<People>(); People people = null; for (int r = 1; r <= totalRows; r++) { row = sheet.getRow(r); // 空行则继续下面 if (POIExcelUtil.isBlankLine(row)) continue; String name = POIExcelUtil .getCellStringValue(row.getCell(0)).replaceAll(" ", "").replaceAll(" ", ""); String sex = POIExcelUtil .getCellStringValue(row.getCell(1)).replaceAll(" ", "").replaceAll(" ", ""); String qq = POIExcelUtil .getCellStringValue(row.getCell(2)).replaceAll(" ", "").replaceAll(" ", ""); String phone1 = POIExcelUtil .getCellStringValue(row.getCell(3)).replaceAll(" ", "").replaceAll(" ", ""); String mobile1 = POIExcelUtil .getCellStringValue(row.getCell(4)).replaceAll(" ", "").replaceAll(" ", ""); String email = POIExcelUtil .getCellStringValue(row.getCell(5)).replaceAll(" ", "").replaceAll(" ", ""); String depName = POIExcelUtil .getCellStringValue(row.getCell(6)).replaceAll(" ", "").replaceAll(" ", ""); String posName = POIExcelUtil .getCellStringValue(row.getCell(7)).replaceAll(" ", "").replaceAll(" ", ""); if (name != null && !name.equalsIgnoreCase("") && sex != null && !sex.equalsIgnoreCase("")) { people = new People(name, "1", sex.equalsIgnoreCase("男") ? true : false, qq, phone1, mobile1, email, depName, posName); people .setId(UUID.randomUUID().toString()); list.add(people ); } } /** * 判断是否空行 * * @param row * @return */ public static boolean isBlankLine(HSSFRow row) { if (row == null) return true; boolean isBlankLine = true; for (int j = 0; j < row.getLastCellNum(); j++) { if (row.getCell(j) != null && !"".equals(row.getCell(j).getRichStringCellValue())) { isBlankLine = false; break; } } return isBlankLine; }
4、将数据集合保存才数据库中即可。
相关推荐
在 Informatica 中导入 Excel 文件作为源文件 Informatica 是一个功能强大的数据集成平台,能够将来自多种来源的数据集成到一起。然而,对于不熟悉 Excel 的用户,如何将 Excel 文件导入 Informatica 作为源文件...
首先,要导入Excel文件到ListView,我们需要使用一个能够读取Excel文件的库,如Microsoft Office Interop库或更轻量级的第三方库,如NPOI。对于本示例,我们假设使用NPOI,因为它无需安装Office,可以跨平台运行。 ...
在网页中实现“导入Excel文件并以表格显示”的功能,是一项常见的需求,尤其在数据分析、报表展示和数据交互的应用场景中。以下将详细介绍这个过程涉及的关键技术和步骤。 首先,我们需要理解的是,网页不能直接...
在Java编程中,导入Excel文件是一项常见的任务,特别是在数据处理和数据分析领域。为了支持不同版本的Excel文件以及CSV格式的数据,开发者需要了解并掌握相关的API和技术。以下将详细讲解如何在Java中处理`xls`、`...
在ASP(Active Server Pages)开发中,经常需要处理文件上传和数据...以上就是使用ASP上传并导入Excel文件至Access数据库的核心步骤和关键知识点。在实践中,需要根据具体需求调整代码,确保数据处理的准确性和安全性。
在Spring Boot应用中,导入Excel文件并将数据存储到数据库是一项常见的任务,特别是在处理批量数据时。下面我们将详细探讨如何在Spring Boot项目中实现这个功能,涉及的主要知识点包括Spring的文件上传、Excel数据...
ASP(Active Server Pages)是一种微软开发的服务器端脚本环境,用于...以上是ASP上传并导入Excel文件的主要步骤和涉及的技术点。在实际应用中,可能还需要根据具体需求进行调整和优化,如性能优化、用户体验提升等。
**导入Excel文件** 1. **添加NPOI引用**:首先,你需要在你的WPF项目中添加NPOI库的引用。这可以通过NuGet包管理器完成,搜索“NPOI”并安装。 2. **文件选择对话框**:为了让用户选择Excel文件,使用`...
在C#编程环境中,导入Excel文件是一项常见的任务,特别是在开发客户/服务器(C/S)信息管理系统时。Excel因其强大的数据处理能力,常被用来存储和传递数据。本篇将详细介绍如何利用C#来读取Excel文件,并将其内容...
本资源着重展示了如何在DevExpress XAF中生成序列(Sequence)以及导入EXCEL文件,这对于数据管理和操作至关重要。下面将详细阐述这两个功能的实现及其重要性。 1. **生成序列(Sequence)** 序列在数据库中通常...
在C#.NET环境中,导入Excel文件是一项常见的任务,特别是在数据处理、数据分析或应用程序集成的场景中。本篇文章将深入探讨如何使用C#.NET来实现这一功能,并提供相关的知识点。 首先,C#.NET导入Excel文件主要涉及...
sql脚本为批量导入excel文件数据到SQLSERVER库,可以导入多个sheet,需安装MicroSoft的AccessDatabaseEngine_X64组件,网上下载即可
本篇文章将详细探讨如何使用POI库来导入Excel文件,并结合form表单提交的数据进行处理。我们将讨论以下几个核心知识点: 1. **Apache POI简介** Apache POI 是一个开源项目,它提供了API来处理Microsoft的Office...
在Java编程环境中,导入Excel文件是一项常见的任务,特别是在数据处理、数据分析或自动化测试等领域。本项目提供了一个完整的解决方案,帮助开发者实现这一功能。下面将详细解释这个Java项目中涉及的关键知识点,...
本文将详细介绍如何利用PowerDesigner导入Excel文档,将其转化为实体表,以便进行数据库设计。 首先,我们需要理解PowerDesigner的基本功能。PowerDesigner支持概念数据模型(CDM),逻辑数据模型(LDM)和物理数据模型...
导入Excel文件的目的通常是将已有的数据结构或者业务流程快速转化为PowerDesigner中的模型。 步骤1:启动PowerDesigner 打开PowerDesigner软件,创建一个新的数据模型或选择一个已有的项目进行操作。在菜单栏中选择...
在`JS导出导入Excel文件插件`中,我们很可能会用到这个库的核心功能。 1. **导出Excel文件**: 使用`xlsx`库导出Excel文件非常简单。你可以将JavaScript数组转换为工作簿对象,然后使用`writeFile`函数将其保存为....
在Flex开发中,导入Excel文件是一项常见的需求,特别是在数据处理和可视化应用中。Flex是一种基于ActionScript 3.0的开放源代码框架,用于构建富互联网应用程序(RIA)。要实现Flex导入Excel文件的功能,通常会涉及...