`
longgangbai
  • 浏览: 7330578 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

POI3.8组件研究(六)---struts2.0 视图层文件页面点击导出

 
阅读更多

    在struts2.0中点击导出按钮将信息导出为excel文件的实现,当点击按钮时候,需要将生成的excel的文件转换为输出流在页面下载提供用户保存。

在struts2.0中action的代码方法为:

public class  FaultAction extends BaseStruts2Action

/**
	 * 点击导出导出页面
	 * @return
	 */
	public String faultExport(){
		return SUCCESS;
	}
	/**
	 * 报表附件文件下载
	 * @return
	 * @throws IOException 
	 */
	public InputStream getInputStream() throws Exception{ 
		//读取相关的属性文件
		Properties properties=new Properties();
		properties.load(FaultAction.class.getResourceAsStream("/resource_excel.properties"));	
		String headerTitlesStr=properties.getProperty("headerTitles");
		//headerTitlesStr=new String(headerTitlesStr.getBytes(),"utf-8");
		String titlesStr=properties.getProperty("titles");
		String[]  headerTitltes=headerTitlesStr.split(":");
		String[] titles=titlesStr.split(":");
		if(logger.isDebugEnabled()){
			logger.debug("故障汇总统计报告:"+headerTitlesStr);
		}
		fileName =properties.getProperty("fileName");
		fileName=EncodeUtils.urlEncode(fileName);
		//fileName=new String(fileName.getBytes("utf-8"),"ISO8859-1");
		String title="故障反馈及处理跟踪表";
		List<Map<String, Object>> faultMapList=faultService.queryFalutReportMap(faultCon);
		//遍历并存储所有的项目
		Map<String,List<Map<String, Object>>> faultCollMap=new HashMap<String,List<Map<String, Object>>>();
		Map<String,String> projectCollMap=new HashMap<String,String>();
		if(CollectionUtils.isNotEmpty(faultMapList)){
			for(Map<String, Object> faultMap : faultMapList){
				String projectId=faultMap.get("projectId").toString();
				String projectName=faultMap.get("projectName").toString();
				List<Map<String, Object>> tempFaultMapList=null;
				if(faultCollMap.containsKey(projectId)){
					tempFaultMapList=faultCollMap.get(projectId);
				}else{
					//存储项目名称信息
					projectCollMap.put(projectId, projectName);
					//创建故障集合并存储故障
					tempFaultMapList=new ArrayList<Map<String, Object>>();
				}
				tempFaultMapList.add(faultMap);
				faultCollMap.put(projectId, tempFaultMapList);
			}
		}
		ExcelVO excelVO=new ExcelVO();
		excelVO.setPath(fileName);
		excelVO.setPrefix("xls");
		if(MapUtils.isNotEmpty(faultCollMap)){
			Set<Entry<String,List<Map<String, Object>>>> faultset=faultCollMap.entrySet();
			for (Entry<String,List<Map<String, Object>>> entry : faultset) {
				String projectId=entry.getKey();
				List<Map<String, Object>> faultInfoList=entry.getValue();
				String projectName=projectCollMap.get(projectId);
				SheetVO sheetVO=new SheetVO();
				 //表中中的表头
				sheetVO.setHeaderTitle(headerTitltes);
				//每行绑定的字段
				sheetVO.setTitles(titles);
				sheetVO.setTitle(title);
				//表中的数据
				sheetVO.setSheetContentMap(faultInfoList);
				//表头起始的行数
				sheetVO.setRowNum(1);
				//Sheet中标题
				sheetVO.setSheetName(projectName);
				List<SheetVO> sheets=null;
				if(excelVO.getSheets()!=null){
					sheets=excelVO.getSheets();
				}else{
					sheets=new ArrayList<SheetVO>();
				}
				sheets.add(sheetVO);
				excelVO.setSheets(sheets);
			}
		}
		InputStream in =excelService.createExcelService(excelVO);
		return in;
	} 

 

 

struts2.0的配置如下:

		<!-- 故障汇总统计功能 -->
		<action name="faultExport" method="faultExport" class="com.easyway.eamsg.faultmgt.action.FaultAction">
     		<result name="success" type="stream">
     			<param name="contentType">application/octet-stream;charset=ISO8859-1</param> 
				<param name="inputName">inputStream</param> 
				<param name="contentDisposition">attachment;filename="${fileName}"</param> 
				<param name="bufferSize">10240</param> 
     		</result>
     	</action> 

 

 

jsp页面一个简单的按钮的:

<td   width="10%" class="font9_cu_9" >
          <input type="button" value="导出Excel" class="btn01" onclick="javascript:excelInfo()">
          </td>

	function excelInfo(){
		//验证时间
		var beginTime = document.getElementById("beginTime").value;
		 beginTime =beginTime.replace(/(^\s*)|(\s*$)/g,"");
		 if(beginTime==''){
			 alert("请输入故障发生起始时间!");
			 return;
		 }
		 //截至时间
		 var endTime = document.getElementById("endTime").value;
		 endTime =endTime.replace(/(^\s*)|(\s*$)/g,"");
		 if(endTime==''){
			 alert("请输入故障截至时间!");
			 return;
		 }
		 var faultConitemId = document.getElementById("faultConitemId").value;
		 document.forms[0].action="${pageContext.request.contextPath }/faultMgt/faultExport.action?faultCon.startDate="+beginTime+"&faultCon.endDate="+endTime+"&faultCon.itemId="+faultConitemId+"&time="+new Date().getTime();
		 document.forms[0].submit();
	}

 

0
1
分享到:
评论

相关推荐

    poi-3.8-20120326.jar、poi-ooxml-3.8-20120326.jar

    内部包括poi-3.8-20120326.jar、poi-ooxml-3.8-20120326.jar、poi-ooxml-schemas-3.8-20120326.jar 测试可用版本,有些下载的不能用

    poi-ooxml-schemas-3.8,poi-3.8,poi-ooxml jar包合集

    标题中的"poi-ooxml-schemas-3.8,poi-3.8,poi-ooxml jar包合集"指的是Apache POI项目中用于处理Microsoft Office格式文件的Java库,特别是针对Excel(XLS和XLSX)文档的处理。Apache POI是一个流行的开源库,允许...

    poi-src-3.8-beta5-20111217.tar.gz

    标题中的"poi-src-3.8-beta5-20111217.tar.gz"表明这是一款名为Apache POI的开源项目源代码的压缩包,版本为3.8 Beta5,发布日期为2011年12月17日。Apache POI是一个Java库,主要用于读写Microsoft Office格式的文件...

    poi-3.8-beta3-20110606工具包

    为了使用POI,开发者需要将提供的"poi-3.8-beta3-20110606.jar"添加到项目的类路径中,然后就可以通过调用相应的API来操作Office文件了。同时,通过学习和参考"poi-examples-3.8-beta3-20110606"中的代码,可以加快...

    poi3.8+poi-pdf+poi-core.rar

    标题中的"poi3.8+poi-pdf+poi-core.rar"提到了三个主要部分:POI 3.8 版本、poi-pdf 1.0 和 poi-core 1.0。 1. **POI 3.8**: 这是Apache POI的一个稳定版本,发布于2012年3月26日。它包含多个子模块,如: - **poi...

    poi-3.8.jar;poi-ooxml-3.8.jar;poi-ooxml-schemas-3.8.jar

    java中读取word文档需要引用apache的poi开源项目...为方便下载提供6个jar包,其中包含:poi-3.8.jar;poi-ooxml-3.8.jar;poi-ooxml-schemas-3.8.jar;poi-scratchpad-3.8.jar;xmlbeans-2.3.0.jar;dom4j-1.6.1.jar。

    POI包最新版3.8-beta4-20110826

    Apache POI是一个开源项目,主要用于处理Microsoft Office格式的文件,如Word(.doc、.docx)、Excel(.xls、.xlsx)、PowerPoint(.ppt、.pptx)等。这个压缩包“POI包最新版3.8-beta4-20110826”包含了POI项目的...

    poi-3.8-20120326-6个jar包

    poi-3.8-20120326-6个jar包: poi-3.8-20120326.jar poi-examples-3.8-20120326.jar poi-excelant-3.8-20120326.jar poi-ooxml-3.8-20120326.jar poi-ooxml-schemas-3.8-20120326.jar poi-scratchpad-3.8-20120326....

    poi-bin-3.8-beta4-20110826

    "poi-bin-3.8-beta4-20110826"是一个特定版本的POI库的二进制发行包,发布于2011年8月26日,属于3.8 beta 4版本。这个版本包含了处理Office文档所需的类和资源文件。 POI项目的核心组件包括以下几个部分: 1. **...

    poi3.8和3.10还有3.11的jar包,保证可用

    Apache POI是一个开源项目,主要用于处理Microsoft Office格式的文件,如Excel、Word和PowerPoint。在Java开发中,POI库被广泛用于读取、写入和修改这些文档。提供的jar包分别是3.8、3.10和3.11版本,每个版本都有其...

    poi-3.8-final-jdk1.4-20120520-rc1.jar

    poi-3.8-final-jdk1.4-20120520-rc1.jar

    poi-3.8-20120326.jar 和 poi-excelant-3.8-20120326.jar

    在给定的文件中,"poi-3.8-20120326.jar" 和 "poi-excelant-3.8-20120326.jar" 是Apache POI库的特定版本,主要用于Java环境下读取和写入Excel文件。 Apache POI的核心功能: 1. **Excel文件处理**:Apache POI ...

    poi-ooxml-schemas-3.8-20120326.jar 包

    导入excel需要的\poi-ooxml-schemas-3.8-20120326.jar

    读写Excel2007 POI3.8

    5. poi-ooxml-3.8-beta2-20110408.jar:处理Open XML格式的组件。 6. log4j-1.2.13.jar:Apache Log4j,日志记录框架,用于调试和跟踪代码中的问题。 7. dom4j-1.6.1.jar:DOM4J库,提供了处理XML文档的Java API。 8...

    poi-examples-3.8-beta5-sources.jar.zip

    这个"poi-examples-3.8-beta5-sources.jar.zip"文件包含的是Apache POI 3.8 Beta 5版本的源代码示例。源代码对于开发者来说是极其宝贵的资源,它能帮助我们理解库的内部工作原理,调试问题,以及根据需求自定义功能...

    poi 3.8 版本全量包

    3. **poi-ooxml-3.8-20120326.jar**:这部分库专门用于处理基于Office Open XML (OOXML) 格式的文件,如.xlsx、.docx和.pptx。OOXML是微软在2007年推出的新文件格式标准。 4. **xmlbeans-2.3.0.jar**:XMLBeans是...

    poi-3.8的6个包

    1. **poi-3.8-20120326.jar**:这是Apache POI的主要库,包含了处理二进制Excel文件(.xls)的基本功能。你可以通过这个库创建、读取和修改Excel工作簿,包括单元格数据、公式、样式等。 2. **poi-ooxml-3.8-...

    poi 3.8 beta4相关包

    poi 3.8 beta4相关包 包含poi-3.8-beta4.jar、poi-ooxml-3.8-beta4.jar、poi-ooxml-schemas-3.8-beta4.jar、poi-scratchpad-3.8-beta4.jar

    poi 3.8 3.9 3.10 3.15 3.17各种版本

    Apache POI 是一个开源项目,专门用于处理Microsoft Office格式的文件,如Excel(XLS、XLSX)、Word(DOC、DOCX)等。在Java环境中,POI库提供了丰富的API,使得开发者能够方便地读取、写入和操作这些文件。在给定的...

    POI3.8组件研究(七)--基于XSSF and SAX (Event API)事件的解析

    "POI3.8组件研究(七)--基于XSSF and SAX (Event API)事件的解析" 提到了Apache POI库的一个高级话题,主要关注的是如何使用XSSF(XML Spreadsheet Formatting Streams)和SAX(Simple API for XML)的Event API来...

Global site tag (gtag.js) - Google Analytics