`

导出数据生成Excel文件

    博客分类:
  • j2ee
 
阅读更多

jsp:

<a id="excelExport"></a>

 js:

var excel=function(){
	var node = $('#groupConfig').tree('getSelected');
	if(node!=null)
		var groupConfigSearch =node.id;
	else node=null;
	
	var data = {
			orgCode:groupConfigSearch,
			helpType:$("#searchType").combobox('getValue'),
			name:$("#searchName").val(),
			youthTel:$("#searchTel").val() 
	};
	
	$.ajax({
		url:basepath+'/hk/importExcel.do', 
		type:'POST',
		dataType:'json',
		data:data,
		success:function(data) {
			console.log(data);
			console.log(data.data);
			console.log(data.success);
			$("#excelExport").attr("href",data.data);
			document.getElementById("excelExport").click();
			$('#searchDiv').form('clear');
	}
	});

}

 sql:

 <select id="getExcel" parameterClass="hk" resultClass="com.fjxhx.business.people.model.HkModel" >
			select id,bankId,youthName,youthTel,
		projectName,appropriationDate,appropriationMoney,subsidizeMonth,firstDate,everyMoney,isCountryOrg,
		monthlyMoney,sumTheoryMoney,sumRealMoney,sumBalance,notOntime,youthId,
		(select b.value from b_status b where b.content=a.helpType and b.code='helpType') as helpType,
		(select b.value from b_status b where b.content=a.projectPlace and b.code='projectPlace') as projectPlace,
		(select c.orgName from ybc_org c where c.orgCode=a.orgCode) as orgCode
		from ybc_hk a where 1=1 
		<dynamic>
			<isNotEmpty prepend="and" property="orgCode">
				orgCode like '%$orgCode$%'
			</isNotEmpty>
			<isNotEmpty prepend="and" property="helpType">
				helpType = #helpType#
			</isNotEmpty>
			<isNotEmpty  prepend="and " property="youthName">
				youthName like concat('%', #youthName#, '%')
			</isNotEmpty>

			<isNotEmpty prepend="and" property="youthTel">
				youthTel like concat('%', #youthTel#, '%')
			</isNotEmpty>
		</dynamic>
		ORDER BY id DESC
	  </select>

 action:

public void importExcel(){
		try {
			BaseDao dao = getDao();
			List<Object> list = dao.selectForList("hk.getExcel", model);
			String basepath=ServletActionContext.getServletContext().getRealPath("templateFile");
			String s1=basepath+"/hk.xls";//模板
			String s2=basepath+"/hkTemp.xls";
			ExcelUtil.exportToExcel(list, "第一页",s1,s2);
			this.setData("servlet/downloadServlet?path="+s2);
			this.setSuccess(true);
			this.send();
		} catch (Exception e) {
			e.printStackTrace();
			this.setData("操作失败");
			this.setSuccess(false);
			this.send();
		}
	}
	

 

servelt:

package com.fjxhx.business.system.servlet;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class downloadServlet extends HttpServlet {

	/**
	 * Constructor of the object.
	 */
	public downloadServlet() {
		super();
	}

	/**
	 * Destruction of the servlet. <br>
	 */
	public void destroy() {
		super.destroy(); // Just puts "destroy" string in log
		// Put your code here
	}

	/**
	 * The doGet method of the servlet. <br>
	 *
	 * This method is called when a form has its tag value method equals to get.
	 * 
	 * @param request the request send by the client to the server
	 * @param response the response send by the server to the client
	 * @throws ServletException if an error occurred
	 * @throws IOException if an error occurred
	 */
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		
		this.doPost(request, response);
	}

	/**
	 * The doPost method of the servlet. <br>
	 *
	 * This method is called when a form has its tag value method equals to post.
	 * 
	 * @param request the request send by the client to the server
	 * @param response the response send by the server to the client
	 * @throws ServletException if an error occurred
	 * @throws IOException if an error occurred
	 */
	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		String path=request.getParameter("path");
		/**
		 * 如果下载成功删除模版文件
		 */
		System.out.println(path);
		if(download(path, response))
			deleteFile(path);
	}
	
	public static boolean deleteFile(String fileName) {  
		  File file = new File(fileName);  
		  // 如果文件路径所对应的文件存在,并且是一个文件,则直接删除  
		  if (file.exists() && file.isFile()) {  
		   if (file.delete()) {  
		    System.out.println("删除单个文件" + fileName + "成功!");  
		    return true;  
		   } else {  
		    System.out.println("删除单个文件" + fileName + "失败!");  
		    return false;  
		   }  
		  } else {  
		   System.out.println("删除单个文件失败:" + fileName + "不存在!");  
		   return false;  
		  }  
		 }  

	/**
	 * Initialization of the servlet. <br>
	 *
	 * @throws ServletException if an error occurs
	 */
	public void init() throws ServletException {
		// Put your code here
	}
	
	private boolean download(String path, HttpServletResponse response) {
		boolean flag=false;
		try {
			// path是指欲下载的文件的路径。
			File file = new File(path);
			// 取得文件名。
			String filename = file.getName();
			// 以流的形式下载文件。
			InputStream fis = new BufferedInputStream(new FileInputStream(path));
			byte[] buffer = new byte[fis.available()];
			fis.read(buffer);
			fis.close();
			// 清空response
			response.reset();
			// 设置response的Header
			response.addHeader("Content-Disposition", "attachment;filename="
					+ new String(filename.getBytes()));
			response.addHeader("Content-Length", "" + file.length());
			OutputStream toClient = new BufferedOutputStream(
					response.getOutputStream());
			response.setContentType("application/vnd.ms-excel;charset=utf-8");
			toClient.write(buffer);
			toClient.flush();
			toClient.close();
			flag=true;
		} catch (IOException ex) {
			ex.printStackTrace();
		}
		return flag;
	}


}

 web.xml

<servlet-mapping>
		<servlet-name>downloadServlet</servlet-name>
		<url-pattern>/servlet/downloadServlet</url-pattern>
</servlet-mapping>

<servlet>
    <description>This is the description of my J2EE component</description>
    <display-name>This is the display name of my J2EE component</display-name>
    <servlet-name>downloadServlet</servlet-name>
    <servlet-class>com.fjxhx.business.system.servlet.downloadServlet</servlet-class>
 </servlet>

 

模板:

中文

model里的属性

 

jar:

 

分享到:
评论

相关推荐

    oracle导出数据生成excel

    1. **SQL*Plus导出数据为CSV格式** - 创建SQL查询:首先,你需要编写一个SQL查询来选择你想导出的数据。例如,如果你想从名为"employees"的表中导出所有员工信息,查询可能如下: ``` SELECT * FROM employees; ...

    Java导出数据到Excel文件中(支持多表头)

    在Java编程中,导出数据到Excel文件是一项常见的任务,特别是在数据分析、报表生成或数据交换等场景下。这里我们将深入探讨如何使用Java实现从数据库中查询数据并将其以多级表头的形式导入到Excel文件中。 首先,...

    数据库导出数据为excel文件

    在生成Excel文件时,工具需要考虑到列宽、行高、样式设置以及数据类型映射,比如将日期和时间数据转换为Excel可以识别的格式。 至于EEUtil,这可能是工具的名字或者是导出过程中的一个实用程序。如果是工具的名字,...

    PHP导出数据到excel文件

    标题"PHP导出数据到excel文件"和描述中提到的"PHP导出MySQL数据到excel文件"正是关于这个主题的,它涉及到了PHP编程语言与MySQL数据库的结合,以及如何利用PHP生成Excel文件供用户下载。 PHP是一种广泛使用的服务器...

    kettle循环导出数据到excel生成多个sheet页

    在本场景中,我们讨论的是如何利用Kettle来实现一个特定的需求:循环导出数据到Excel并生成多个sheet页。 首先,我们需要理解这个需求的背景。在数据分析或报告生成中,有时需要根据不同的分类将数据分隔开,以便于...

    java导出30万数据量的excel(采用生成多个excel,最后打包zip)

    在Java开发中,处理大数据量的Excel导出是一项常见的任务,尤其当数据量达到数十万条时,单个Excel文件可能会遇到性能瓶颈或格式限制。本项目针对这一问题提出了一种解决方案,即分块生成多个Excel文件,然后将它们...

    Excelvc—VC++ 灵活操作Excel导入导出数据,不但可以生成Excel文件,还可以从Excel文件导入数据到VC的ListCtrl控件中

    它提供了灵活且高效的方式来操作Excel,允许开发者轻松地生成Excel文件以及将数据从Excel导入到VC++的ListCtrl控件中。 1. Excelvc库介绍: Excelvc库是专门为VC++设计的,它通过封装Microsoft Office的COM接口,...

    Java导出数据到Excel文件中(支持多页签)

    Java导出数据到Excel文件中,支持多页签形式,如通过Java导出一个名为“各部门人员列表”,然后在文件中有三个页签,分别为“研发部”、“综合部”、“财务部”。其中这三个页签里面的数据就是通过Java导出到Excel...

    kettle循环导出数据到Excel中

    每次循环会生成一个新的Excel文件,或者在同一个文件的不同工作表中写入数据。可以设置行限制,确保Excel文件不会过大。 5. **合并结果**: 如果需要将所有循环产生的Excel文件合并成一个,可以使用"文件合并"步骤,...

    QT导出excel文件。

    QT导出EXCEL,从tableWidget列表获取数据导出到excel文件。导出过程使用了excel模板文件,可以从tableWidget读取固定的几列数据导出到excel文件中。其中excel事先设置好文件格式,后续直接读数写数即可。开发过程...

    关于Java使用EasyExcel导出动态数据为Excel文件SpringBoot代码项目示例

    1、Java导出动态数据为Excel文件,具体示例可以参考:https://img-blog.csdnimg.cn/1cc86ee5dffa48669e2b97283585fad2.png 2、项目使用SpringBoot,Ali3.0.5版本的easyexcel框架。 3、资源内有具体的使用说明和易...

    springboot 导出excel 导入excel 生成excel 内容有点多

    生成Excel文件与导出类似,但通常会根据用户输入或数据库数据动态生成。可以创建一个模板,然后根据需要填充数据,最后将工作簿写入到响应流中供用户下载。 以上就是Spring Boot中处理Excel文件的基本操作,包括...

    多个excel导出压缩成zip 文件 数据量大导出

    # 导出数据到多个Excel文件 data = ... # 数据 for i, chunk in enumerate(pd.groupby(data, group_keys=False, chunksize=10000)): chunk.to_excel(f'chunk_{i}.xlsx', index=False) # 压缩文件 with ...

    SpringBootMybatis+poi+Thymeleaf实现excel文件数据导入到数据库以及从数据库将数据导出成excel.zip

    在本项目中,主要使用POI来处理Excel文件,读取数据并将其导入到数据库,或者从数据库中导出数据到Excel文件。 4. **Thymeleaf**: Thymeleaf是一个现代的服务器端Java模板引擎,可以处理HTML、XML、JavaScript、CSS...

    extjs grid数据导出excel文件

    5. **生成Excel文件**:最后,使用SheetJS的`writeFile`或`createWriteStream`方法将工作簿写入到一个二进制文件,通常以`.xlsx`为扩展名。在浏览器环境中,我们可能还需要借助`Blob`和`URL.createObjectURL`来创建...

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

    本主题将详细探讨如何使用C#实现从Excel文件导入数据到ListView控件,以及如何将ListView中的数据导出回Excel文件。这两个操作在数据分析、报表生成和数据管理等场景中非常常见。 首先,要导入Excel文件到ListView...

    C#创建Excel文件并将数据导出到Excel文件

    在链接的博客文章中,作者可能详细讲解了如何使用C#和NPOI库创建Excel文件并导出数据的步骤,包括创建工作簿、工作表,插入数据,设置样式等,并给出了具体代码示例。通过阅读这个博客,你可以获取到更具体的操作...

Global site tag (gtag.js) - Google Analytics