`

struts2+pol实现Exl导入

阅读更多

一、Action代码

 

package com.xinghuo.jqfx.web.jqlr;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
/**
  * Exl导入
  */
public class JqfxJqlrDtAction extends FileUploadAction
{
        //省去一些不要的东西,只保留导入功能代码
        private File excelFile;		//前台传过来的文件
	private String excelFileFileName;	//前台传过来的文件名
	
	/** 
	 * Excel导入
	 */
	@SuppressWarnings("deprecation")
	public String daoRu(){
		dicChange();	//字典项键值对集合
		HSSFWorkbook workbook = findWorkbook(excelFile);	//创建文件对象
		if(workbook != null){
			List<JqfxJqlrDt> jqfxJqlrDtlList = new ArrayList<JqfxJqlrDt>();		//对象集合
			int beginRowIndex = 4; 		//从excel中第几行读取
			int totalRows = 0; 			
			HSSFSheet sheet = workbook.getSheetAt(1);	//读取第一个seet页的内容
			totalRows = sheet.getLastRowNum();			//得到seet的总行数
			
			for (int i = beginRowIndex; i <= totalRows; i++) {
				JqfxJqlrDt jqfxJqlrDt = new JqfxJqlrDt();
				
				HSSFRow row = sheet.getRow(i);	//得到行
				if (row == null) {
					continue;
				}
				
				/* 读取表格数据 */
				HSSFCell cell_xzqy = row.getCell((short) 1);
				HSSFCell cell_jjdwName = row.getCell((short) 2);	
				HSSFCell cell_jqxz = row.getCell((short) 3);
				HSSFCell cell_jqlb = row.getCell((short) 4);
				
				//一下两列和成一个时间
				HSSFCell cell_afTime = row.getCell((short) 5);
				HSSFCell cell_afDate = row.getCell((short) 6);
				
				HSSFCell cell_sacw = row.getCell((short) 7);
				HSSFCell cell_xl = row.getCell((short) 8);
				HSSFCell cell_ddmc = row.getCell((short) 9);
				HSSFCell cell_remark = row.getCell((short) 10);
				HSSFCell cell_jcjId = row.getCell((short) 11);
								
				/* 向对象中填充数据 */
				String xzqhName = initHSSFCellToString(cell_xzqy);
				String xzqhId = map_xzqh.get(xzqhName);		//根据Map集合键取值
				if(xzqhId == null){
					continue;
				}
				jqfxJqlrDt.setXzqhName(xzqhName);
				jqfxJqlrDt.setXzqhId(xzqhId);
				
				jqfxJqlrDt.setJjdwName(initHSSFCellToString(cell_jjdwName));
				
				//警情性质
				String jqxz = initHSSFCellToString(cell_jqxz);
				String jqxzId = map_jqxz.get(jqxz);	
				if(jqxzId == null){
					continue;
				}
				jqfxJqlrDt.setJqxz(jqxz);
				jqfxJqlrDt.setJqxzId(jqxzId);
				
				//警情类别
				String jqlb = initHSSFCellToString(cell_jqlb);
				String jqlbId = map_jqlb.get(jqlb);	
				if(jqlbId == null){
					continue;
				}
				jqfxJqlrDt.setJqlb(jqlb);
				jqfxJqlrDt.setJqlbId(jqlbId);
				
				//案发时间
				//如果案发日期格式正确则添加,不正确似数据无效,跳过该条数据
				Date faDate = initHSSFCellToDate(cell_afTime,cell_afDate);
				if(faDate == null){
					continue;
				}else{
					jqfxJqlrDt.setAfTime(faDate);
				}
					
				jqfxJqlrDt.setSacw(initHSSFCellToString(cell_sacw));
				jqfxJqlrDt.setXl(initHSSFCellToString(cell_xl));
				
				//地铁线路
				String xl = this.initHSSFCellToString(cell_xl);
				try {
					xl=xl.substring(0,xl.lastIndexOf("."));
				} catch (StringIndexOutOfBoundsException e) {
					
				}
				String xlId = map_xl.get(xl);
				if(xlId == null){
					continue;
				}
				jqfxJqlrDt.setXl(xl);
				jqfxJqlrDt.setXlId(xlId);
										
				jqfxJqlrDt.setDdmc(initHSSFCellToString(cell_ddmc));
				jqfxJqlrDt.setRemark(initHSSFCellToString(cell_remark));			
				jqfxJqlrDt.setJcjId(initHSSFCellToString(cell_jcjId));
				//导入时流程状态为1
				jqfxJqlrDt.setDataFlowStatus("1");
		
				jqfxJqlrDtlList.add(jqfxJqlrDt);
			}
			
			//保存警情信息
			for (JqfxJqlrDt jqfxJqlrDt : jqfxJqlrDtlList) {
				//查询数据库中存不存在接警编号相同的数据
				boolean boole = manager.getJqfxJqlrDtjjcbh(jqfxJqlrDt.getJcjId());
				if(boole){
					//存在接警编号相同的数据,则不插入数据
				}else{
					manager.saveJqfxJqlrDt(jqfxJqlrDt);
				}	
			}
			message.setUrl("/jqlr/jqfxJqlrDt/jqfxJqlrDt!list.action");
			message.setMessInfo("导入成功。");
		}
		message.setType(Message.LOCATION_URL);
		return "message";
	}
		
	/**
	 * 得到excel文件
	 * @return
	 */
	public HSSFWorkbook findWorkbook(File file) {	
		if(excelFileFileName.toLowerCase().endsWith(".xls")){
			try {
				FileInputStream fileInputStream = new FileInputStream(file);	//得到文件
				HSSFWorkbook hssfWorkbook = new HSSFWorkbook(fileInputStream);	//将文件转换为excel格式
				return hssfWorkbook;
			} catch (FileNotFoundException e) {
				e.printStackTrace();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}else{
			message.setUrl("/jqlr/jqfxJqlrDt/jqfxJqlrDt!excelDaoRuXuanZe.action");
			message.setMessInfo("导入失败,文件格式不对,请选择.xls文件。"); 
			return null;
		}
		return null;		
	}
	
	/**
	 * 将表格格式转化为字符串
	 * @param cell
	 * @author xiongmin
	 */
	private String initHSSFCellToString(HSSFCell cell) {
		String initCell = "";
		if (cell != null) {
			initCell = cell.toString();
		}
		return initCell;
	}
	
	/**
	 * 将表格格式转化为时间类型
	 */
	private Date initHSSFCellToDate(HSSFCell cell,HSSFCell cell2) {
		Date time = new Date();
		SimpleDateFormat formatDate = new SimpleDateFormat("yyyy-MM-dd HH:mm");
		String strTime = cell.toString() + " " + cell2.toString();
		if (cell != null) {
			try {
				time = formatDate.parse(strTime);
				return time;
			} catch (ParseException e) {
				e.printStackTrace();
				return null;
			}
		}
		return null;
	}

	/**
	 * 得到格式化的系统时间
	 * @param date
	 * @return
	 */
	public Date findDate(){
		Date date = new Date();
		SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
		try {
			date = dateFormat.parse(dateFormat.format(date));
		} catch (ParseException e) {
			e.printStackTrace();
		}
		return date;
	}
        //下面省去get/set方法
        ......
}

 

 二、页面代码

 

<%@ page contentType="text/html;charset=UTF-8"%>
<%@ include file="/commons/taglibs.jsp"%>
<html xmlns="http://www.w3.org/1999/xhtml">
	<head>
		<title>地铁-警情录入</title>
		<%@ include file="/commons/meta.jsp"%>
		<link rel="stylesheet" href="${ctx}/public/css/text.css" type="text/css">
		<script language=javascript>
			//根据单选按钮选择导入情况
			function daoRu(){
				var obj = document.getElementsByName("excel");
				for(var i = 0; i < obj.length; i++){
		    		if(obj[i].checked){
		    			document.form1.action= obj[i].value;
		    		}
	    		}
	    		document.form1.submit();
			}
   		</script>
	</head>
	<body>
		<form id="form1" name="form1" method="post" enctype="multipart/form-data">
			<table width="98%" align="left" border="0" cellpadding="0" cellspacing="1" class="tabTest">
				<tr>
					<td bgcolor="#eaf7ff" align="right" width="8%" height="28">
						请选择导入类型:
					</td>
					<td width="40%" bgcolor="#eaf7ff" align="left">
						<input type="radio" name="excel" value="${ctx}/jqlr/jqfxJqlrDt/jqfxJqlrDt!daoRu.action" /> 地铁
						<input type="radio" name="excel" value="${ctx}/jqlr/jqfxJqlrGj/jqfxJqlrGj!daoRu.action" /> 公交
					</td>
				</tr>
				<tr>
					<td width="8%" height="31" bgcolor="#eaf7ff" align="right">
						请选择Execl文件:
					</td>
					<td width="40%" bgcolor="#eaf7ff" align="left">
						<input type="file" name="excelFile" />
					</td>
				</tr>
				<tr>
					<td bgcolor="#eaf7ff" align="left" colspan="2">
						<input type="button" name="dr" value="导入" onclick="daoRu()" />
					</td>
				</tr>
			</table>
		</form>
	</body>
</html>

 

 

 

分享到:
评论

相关推荐

    exl 导入与导出

    在IT行业中,Excel(通常写作"exl")是一种广泛使用的电子表格软件,它提供了强大的数据处理和分析功能。PHP是一种流行的服务器端脚本语言,常用于开发Web应用程序。将Excel与PHP结合,可以实现数据的导入和导出,这...

    java查询数据库导入EXL表格

    这个案例提供了一种方法,通过Java实现这一功能,并且具有高度的可复用性,只需要简单地调整数据库连接信息和对应的数据实体类即可。 首先,我们需要了解Java中用于操作数据库的基本库——JDBC(Java Database ...

    Txt、Exl自适应导入GridView

    通过以上步骤,我们可以实现TXT和EXL数据的自适应导入到GridView,从而在网页上方便地查看和操作这些数据。在实际项目中,这个过程可能需要根据具体需求进行定制,如数据验证、权限控制、导出功能等。掌握这一技能...

    exl文件导入数据库中

    当我们拥有大量数据存储在Excel(通常写作"exl",但应为"xlsx"或"xls")文件中时,有时需要将这些数据导入到数据库中以便进行更高效、更复杂的查询和分析。本主题将详细介绍如何批量地将Excel文件中的数据导入到...

    exl库存管理

    简单的,函数编的,很实用的,大家可以看看

    java excel导入导出的示例

    通过掌握Apache POI,Java开发者能够方便地与Excel文件进行交互,实现数据的导入与导出,极大地提升了工作效率。在实际开发中,可以根据具体需求灵活运用,结合其他技术,如Spring Batch或Quartz,构建强大的数据...

    java-excel导入导出注解版内用教程说明

    通过这种方式,你可以方便地实现Excel数据的导入导出。在实际应用中,可能还需要处理更复杂的数据类型、校验、格式转换等问题,但这个基础框架已经能够帮助你快速启动项目。记住,为了性能考虑,可以使用...

    Ecxel数据导入Oracle 数据库中

    Excel作为常用的数据整理工具,有时需要与更强大的数据库系统如Oracle进行交互,实现数据的导入导出。本文将深入探讨如何将Excel数据导入到Oracle数据库中,以及涉及到的相关技术点。 首先,我们要理解Excel文件的...

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

    步骤2:选择导入类型 在导入向导中,你需要选择“From Spreadsheet”选项,因为我们要从Excel文件导入数据。点击“Next”。 步骤3:选择Excel文件 浏览并选择你要导入的Excel文件,确保文件包含了你需要转换的数据...

    PLSQL Developer导入数据excel表格

    2. **选择连接类型**:在导入向导中,你需要选择一个ODBC数据源。如果你已经配置了Excel的ODBC数据源,那么它会出现在列表中。如果没有,你需要先在系统的ODBC数据源管理器中设置一个,通常选择“Microsoft Excel ...

    TP3.2 Excel导入

    10. **自动化工作流**:在更复杂的场景中,Excel导入可能是自动化工作流的一部分,结合其他工具和脚本,实现数据的自动抓取、清洗、分析和报告。 总的来说,“TP3.2 Excel导入”是一个功能强大的工具,它简化了从...

    exl高效 导出

    ### EXL高效导出知识点详解 #### 一、EXL高效导出概念解析 EXL高效导出,指的是在处理大量数据时,采用特定的方法和技术将数据从数据库或其他存储介质快速转移到Excel文件的过程。这种技术通常被应用于数据分析、...

    EXL文件修复

    EXL文件,通常指的是Microsoft Excel的工作簿文件,用于存储电子表格数据、计算公式以及复杂的分析。当EXL文件遭遇损坏,可能会导致数据丢失、无法打开或显示不全等问题,这给用户带来了极大的困扰。本文将深入探讨...

    EXL格式 汉字与拼音的对照表

    2. **汉字与拼音的对照**:在中文环境下,拼音是汉字的音译表示,主要用于教学和输入法。汉字与拼音对照表提供了汉字和它们的标准普通话拼音的一一对应关系,例如“汉字”对应的拼音是“hànzì”。这种对照表对于...

    读exl文件方法.rar_c++ exl_exl_文件exl

    在C++编程环境中,处理Excel文件通常涉及到使用第三方库,因为C++标准库本身并不直接支持Excel文件的读写。...对于给定的压缩包文件,其具体实现细节需要查看解压后的代码文件"读exl文件方法"以获取更多信息。

    力控点表导入

    详细描述力控点表的导入方法,可以在EXCEL文档里方便的建立力控的数据点,免去了很多繁琐的操作。。

    HTML表格导入Excel插件

    将网页上的表格导入Excel,使用方法如下: $("#tableExcel").table2excel({ exclude: ".noExl", filename:projectname, name:"Excel Document Name", exclude_img:true, exclude_links:true, exclude_inputs:...

    exl处理方法

    这个过程涉及到一系列的技术和步骤,下面将详细讲解如何实现"exl处理方法",以及如何在后台使用一般处理程序来处理上传的文件并保存到服务器。 首先,了解EXTForm。EXTForm是EXTJS库中的一个组件,它提供了一种在...

    Excel导入数据库

    9. 数据更新和维护:如果Excel数据需要定期更新,可以建立自动化流程,如定时任务,实现Excel数据的自动导入。 10. 性能优化:当处理大量数据时,考虑分批导入、使用索引、优化SQL语句等方式提高导入性能。 总之,...

    easypoi导入导出excel表格.pdf

    它通过注解的方式简化了对Excel文件的操作,使得开发者可以更加便捷地实现数据的导入导出。尽管其功能强大,但在实际使用过程中,开发者也需要了解一些关于其依赖、错误处理以及使用的细节。 ### 如何引入jar包 在...

Global site tag (gtag.js) - Google Analytics