`
sgm881218
  • 浏览: 58202 次
社区版块
存档分类
最新评论

HTML导出数据生成excel

    博客分类:
  • java
阅读更多
package com.fuxin.app.action.system;

import java.io.OutputStream;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletResponse;

import jxl.Sheet;
import jxl.Workbook;
import jxl.format.Alignment;
import jxl.write.Label;
import jxl.write.WritableCellFormat;
import jxl.write.WritableFont;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.struts2.ServletActionContext;

import com.fuxin.base.action.BaseAction;
import com.fuxin.web.bean.CustomerBean;
import com.fuxin.web.bean.DepartmentBean;
import com.fuxin.web.bean.TaskBean;
import com.fuxin.web.bean.UserBean;
import com.fuxin.web.bean.UserDailyBean;
import com.fuxin.web.util.DateUtil;

public class BackupAction extends BaseAction {

	private static final long serialVersionUID = 1L;

	private static final Log LOG = LogFactory.getLog(BackupAction.class);

	private Integer[] type;
	private UserBean user;

	public String backup() throws Exception {
		user = super.getLoginUser();
		if (null == user) {
			return LOGIN;
		}


		this.xlsDownload(type);

		return NONE;
	}

	private WritableCellFormat wcf_title;
	private WritableCellFormat wcf_value;
	private void xlsDownload(Integer[] types) throws Exception {
		HttpServletResponse response = ServletActionContext.getResponse();

		OutputStream os = null;

		WritableWorkbook wbook = null;
		try {
			os = response.getOutputStream();// 取得输出流
			wbook = Workbook.createWorkbook(os);

			response.reset();// 清空输出流
			response.setHeader("Content-disposition",
					"attachment; filename=backup_" + DateUtil.getDisplayYMD2() + ".xls");// 设定输出文件头
			response.setContentType("application/msexcel;charset=UTF_8");// 定义输出类型

			// excel 字体样式
			WritableFont wf_title = new WritableFont(WritableFont.createFont("微软雅黑"), 10, WritableFont.BOLD);
			WritableFont wf_value = new WritableFont(WritableFont.createFont("微软雅黑"), 10, WritableFont.NO_BOLD);
			
			wcf_title = new WritableCellFormat(wf_title);
			wcf_value = new WritableCellFormat(wf_value);
			// 位置居中
			wcf_title.setAlignment(Alignment.CENTRE);
			wcf_value.setAlignment(Alignment.CENTRE);
			
			
			for (Integer t : types) {
				switch(t) {
				case 1 : wbook = this.userXls(wbook);break;
				//case 2 : wbook = this.attendanceXls(wbook); break;
				//case 3 : wbook = this.taskXls(wbook); break;
				//case 4 : wbook = this.customerXls(wbook); break;
				//case 5 : wbook = this.departmentXls(wbook); break;
				}
			}
			
			// 主体内容生成结束
			wbook.write(); // 写入文件
		} catch (Exception e) {
			LOG.error(this, e);
		} finally {
			wbook.close();
			os.close(); // 关闭流
		}

	}

	/**
	 * 用户备份
	 * 
	 * @param wbook
	 * @param users
	 * @return
	 * @throws Exception
	 */
	private WritableWorkbook userXls(WritableWorkbook wbook) throws Exception {

		Sheet[] sheets = wbook.getSheets();

		int length = 0;
		if (null != sheets && sheets.length > 0) {
			length = sheets.length;
		}
		WritableSheet wsheet = wbook.createSheet("用户表", length);// sheet名称

		// 开始生成主体内容
		wsheet.addCell(new Label(0, 0, "用户ID", wcf_title));
		wsheet.addCell(new Label(1, 0, "用户名称", wcf_title));
		wsheet.addCell(new Label(2, 0, "标题", wcf_title));
		wsheet.addCell(new Label(3, 0, "登录名", wcf_title));
		wsheet.addCell(new Label(4, 0, "密码", wcf_title));
		wsheet.addCell(new Label(5, 0, "地址", wcf_title));
		wsheet.addCell(new Label(6, 0, "联系方式", wcf_title));
		wsheet.addCell(new Label(7, 0, "部门ID", wcf_title));
		wsheet.addCell(new Label(8, 0, "机器码", wcf_title));

		List<UserBean> users = super.getUserService().getUserList(
				user.getCompanyId(), 0L,
				super.getUserService().getUserListCount(user.getCompanyId()));

		for (int i = 0; i < users.size(); i++) {
			wsheet.addCell(new Label(0, i + 1, users.get(i).getUserId() + "", wcf_value));
			wsheet.addCell(new Label(1, i + 1, users.get(i).getUserName(), wcf_value));
			wsheet.addCell(new Label(2, i + 1, users.get(i).getTitle(), wcf_value));
			wsheet.addCell(new Label(3, i + 1, users.get(i).getLoginName(), wcf_value));
			wsheet.addCell(new Label(4, i + 1, users.get(i).getPassword(), wcf_value));
			wsheet.addCell(new Label(5, i + 1, users.get(i).getAddress(), wcf_value));
			wsheet.addCell(new Label(6, i + 1, users.get(i).getTel(), wcf_value));
			wsheet.addCell(new Label(7, i + 1, users.get(i).getDepartId() + "", wcf_value));
			wsheet.addCell(new Label(8, i + 1, users.get(i).getMachineId(), wcf_value));
		}
		return wbook;
	}
}

 

分享到:
评论

相关推荐

    导出数据生成Excel文件

    总之,导出数据生成Excel文件是IT工作中的一项基本技能,无论你是使用Python的pandas,Java的Apache POI,还是JavaScript的SheetJS,都能轻松完成这一任务。同时,理解Excel文件的内部结构和编程接口,有助于你更...

    导出数据生成excel

    使用jxl导出数据至excel,网页有弹窗提示下载。使用jxl导出数据至excel,网页有弹窗提示下载。使用jxl导出数据至excel,网页有弹窗提示下载。

    ASP.NET导出数据到Excel

    通过`Server.Transfer`或`Server.Execute`方法重定向到一个特定的页面,在该页面中生成Excel文件并返回给客户端。 ##### 2. 使用Response对象 利用`Response`对象的特性,如`Response.ContentType`设置输出类型为...

    easypoi的使用demo,包含Excel模板导出,html导出Excel,Excel导出pdf等

    Easy POI允许开发者使用预定义的Excel模板来导出数据。在模板中,你可以设定好单元格的格式、样式和公式,然后用Easy POI将动态数据填入模板。通过`WorkbookFactory.create()`创建一个工作簿对象,接着使用`...

    ASP导出生成Excel

    在本场景中,我们关注的是如何使用ASP技术来导出数据并生成Excel文件,尤其是涉及与数据库交互的情况。这在数据分析、报表生成或者用户需要下载结构化数据时非常实用。 1. **ASP基础**: ASP是IIS(Internet ...

    使用HTML,CSS快速导出数据到Excel

    但是使用 com 组件导出到 Excel 数据很慢,有另一种生成 excel 文件的方式就是通过 html 和 css 快速导出数据同时并能设置样式,使用这种方式有两个优点:1 是速度快,2 是不需安装 excel 支持。 要实现快速导出...

    C# 将数据导出到Excel汇总

    在ASP.NET中导出数据到Excel主要分为两种基本策略:一是将文件存储在服务器的某个目录下,并通过浏览器提供下载链接;二是直接将文件内容作为输出流发送至浏览器,让用户即时下载。这两种方法各有优势,前者适用于...

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

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

    easyui+数据导出为Excel

    在IT行业中,前端数据处理和展示是至关重要的,特别是在企业级应用中,用户往往需要将大量数据导出为便于分析的格式,如Excel。本文将详细介绍如何在基于EasyUI的前端框架下实现数据导出为Excel的功能。 EasyUI是一...

    自写FreeMarker导出数据为EXcel实例

    在本实例中,"自写FreeMarker导出数据为EXcel"是利用FreeMarker模板语言和Servlet技术来生成Excel文件,方便地导出数据。下面将详细介绍这个过程以及涉及的相关知识点。 1. **FreeMarker模板引擎**: FreeMarker是...

    GridView中导出数据到 Excel

    为了解决这个问题,可以使用开源库如EPPlus,它能脱离Office环境直接生成Excel文件,性能更优且不受平台限制。 总结起来,从GridView中导出数据到Excel涉及的知识点包括: - GridView控件的基本操作与数据绑定 - ...

    layui数据表格导出Excel插件

    这两个文件都是JavaScript库,通过在layui表格中添加相应的操作按钮,实现一键导出数据到Excel的功能。 要使用这个插件,首先需要确保你的项目已经引入了layui框架,并且正确配置了layui的基本元素。然后,你需要在...

    extjs grid数据导出excel文件

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

    Freemarker实现excel导出功能

    在Java世界里,它也被广泛用于生成静态文档或处理数据导出任务,比如Excel文件的生成。本篇文章将详细探讨如何使用Freemarker来实现Excel导出功能,并通过实际例子加深理解。 一、Freemarker基础 1. 模板语言:...

    ASP.NET页面数据导出excel

    本文将详细介绍四种从ASP.NET页面导出数据到Excel的方法。 方法一: 这种方法利用了ASP.NET的Response对象,将DataGrid或GridView等控件的数据直接输出为HTML格式,然后设置Content-Type为"application/vnd.ms-...

    html table 导出Excel,xml

    要将HTML表格数据导出到Excel,我们需要生成符合Excel文件格式的字符串,然后通过浏览器的`window.open()`方法创建一个新的`data:` URL,以下载文件。`tableExport.js`库提供了这样的功能,只需调用其提供的API,...

    cognos 自定义导出PDF和Excel.doc

    ### Cognos自定义导出PDF与Excel功能详解 #### 一、背景介绍 Cognos是一款强大的商业智能(Business Intelligence, BI)工具,能够帮助用户进行数据分析、报告制作及可视化展示等工作。在Cognos环境中,用户经常...

    C#导出数据到EXCEL的方法

    在提供的文档"【原创】C#导出数据到EXCEL方法谈(附实例源码和超级无敌详细讲解).doc"中,你将找到更具体的代码示例和步骤解释,帮助你理解和实现这些方法。通过仔细阅读和实践,你将能够熟练掌握C#导出数据到Excel...

    JavaScript 实现 Excel数据导出 支持多个Sheet页导出

    在前端开发中,有时我们需要为用户提供将数据导出到Excel的功能,这在处理大量表格数据时尤为实用。本文将深入探讨如何使用纯JavaScript实现JSON格式数据到Excel文件的导出,同时支持多个Sheet页的导出。这个功能...

Global site tag (gtag.js) - Google Analytics