`
百卉含英
  • 浏览: 26739 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

导入Excel文件

阅读更多

    当向系统中导入数据时,更多的使用是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、将数据集合保存才数据库中即可。

  

0
0
分享到:
评论

相关推荐

    如何在informatica里导入excel文件当做源文件

    在 Informatica 中导入 Excel 文件作为源文件 Informatica 是一个功能强大的数据集成平台,能够将来自多种来源的数据集成到一起。然而,对于不熟悉 Excel 的用户,如何将 Excel 文件导入 Informatica 作为源文件...

    C# 导入Excel文件到ListView和导出ListView到Excel文件

    首先,要导入Excel文件到ListView,我们需要使用一个能够读取Excel文件的库,如Microsoft Office Interop库或更轻量级的第三方库,如NPOI。对于本示例,我们假设使用NPOI,因为它无需安装Office,可以跨平台运行。 ...

    在页面中导入excel文件并以表格显示

    在网页中实现“导入Excel文件并以表格显示”的功能,是一项常见的需求,尤其在数据分析、报表展示和数据交互的应用场景中。以下将详细介绍这个过程涉及的关键技术和步骤。 首先,我们需要理解的是,网页不能直接...

    java 导入Excel 文件,支持xls、xlsx、csv格式

    在Java编程中,导入Excel文件是一项常见的任务,特别是在数据处理和数据分析领域。为了支持不同版本的Excel文件以及CSV格式的数据,开发者需要了解并掌握相关的API和技术。以下将详细讲解如何在Java中处理`xls`、`...

    asp上传并导入EXCEL文件

    在ASP(Active Server Pages)开发中,经常需要处理文件上传和数据...以上就是使用ASP上传并导入Excel文件至Access数据库的核心步骤和关键知识点。在实践中,需要根据具体需求调整代码,确保数据处理的准确性和安全性。

    springboot导入Excel文件并入库

    在Spring Boot应用中,导入Excel文件并将数据存储到数据库是一项常见的任务,特别是在处理批量数据时。下面我们将详细探讨如何在Spring Boot项目中实现这个功能,涉及的主要知识点包括Spring的文件上传、Excel数据...

    asp导入excel文件

    ASP(Active Server Pages)是一种微软开发的服务器端脚本环境,用于...以上是ASP上传并导入Excel文件的主要步骤和涉及的技术点。在实际应用中,可能还需要根据具体需求进行调整和优化,如性能优化、用户体验提升等。

    C# 导入EXCEL文件和导出EXCEL文件

    **导入Excel文件** 1. **添加NPOI引用**:首先,你需要在你的WPF项目中添加NPOI库的引用。这可以通过NuGet包管理器完成,搜索“NPOI”并安装。 2. **文件选择对话框**:为了让用户选择Excel文件,使用`...

    C#导入EXCEL文件

    在C#编程环境中,导入Excel文件是一项常见的任务,特别是在开发客户/服务器(C/S)信息管理系统时。Excel因其强大的数据处理能力,常被用来存储和传递数据。本篇将详细介绍如何利用C#来读取Excel文件,并将其内容...

    在DevExpress XAF中产生序列和导入EXCEL文件例子

    本资源着重展示了如何在DevExpress XAF中生成序列(Sequence)以及导入EXCEL文件,这对于数据管理和操作至关重要。下面将详细阐述这两个功能的实现及其重要性。 1. **生成序列(Sequence)** 序列在数据库中通常...

    C#.NET中导入Excel文件

    在C#.NET环境中,导入Excel文件是一项常见的任务,特别是在数据处理、数据分析或应用程序集成的场景中。本篇文章将深入探讨如何使用C#.NET来实现这一功能,并提供相关的知识点。 首先,C#.NET导入Excel文件主要涉及...

    批量导入excel文件数据到SQLSERVER库脚本

    sql脚本为批量导入excel文件数据到SQLSERVER库,可以导入多个sheet,需安装MicroSoft的AccessDatabaseEngine_X64组件,网上下载即可

    POI导入Excel文件--form表单提交

    本篇文章将详细探讨如何使用POI库来导入Excel文件,并结合form表单提交的数据进行处理。我们将讨论以下几个核心知识点: 1. **Apache POI简介** Apache POI 是一个开源项目,它提供了API来处理Microsoft的Office...

    Java导入excel文件

    在Java编程环境中,导入Excel文件是一项常见的任务,特别是在数据处理、数据分析或自动化测试等领域。本项目提供了一个完整的解决方案,帮助开发者实现这一功能。下面将详细解释这个Java项目中涉及的关键知识点,...

    powerdesigner 导入Excel文档 做成 实体表

    本文将详细介绍如何利用PowerDesigner导入Excel文档,将其转化为实体表,以便进行数据库设计。 首先,我们需要理解PowerDesigner的基本功能。PowerDesigner支持概念数据模型(CDM),逻辑数据模型(LDM)和物理数据模型...

    excel导入到powerdesigner脚本文件含流程

    导入Excel文件的目的通常是将已有的数据结构或者业务流程快速转化为PowerDesigner中的模型。 步骤1:启动PowerDesigner 打开PowerDesigner软件,创建一个新的数据模型或选择一个已有的项目进行操作。在菜单栏中选择...

    JS导出导入Excel文件插件,简单易用

    在`JS导出导入Excel文件插件`中,我们很可能会用到这个库的核心功能。 1. **导出Excel文件**: 使用`xlsx`库导出Excel文件非常简单。你可以将JavaScript数组转换为工作簿对象,然后使用`writeFile`函数将其保存为....

    Flex导入Excel文件的应用部分代码

    在Flex开发中,导入Excel文件是一项常见的需求,特别是在数据处理和可视化应用中。Flex是一种基于ActionScript 3.0的开放源代码框架,用于构建富互联网应用程序(RIA)。要实现Flex导入Excel文件的功能,通常会涉及...

Global site tag (gtag.js) - Google Analytics