HTML导出数据生成excel

本文介绍了如何通过Java实现用户信息备份并将其导出为Excel文件的过程,包括配置Excel样式、生成用户表单数据和输出文件操作。
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;
	}
}

 

### 回答1: 要在 JavaScript 中导出数据并生成 Excel 文件,您可以使用类似于 SheetJS 的库。 SheetJS 是一个开源的 JavaScript 库,可以帮助您将数据导出为各种格式,包括 Excel。要使用 SheetJS,您需要先在项目中安装它: ``` npm install xlsx ``` 然后,您可以使用以下代码将数据导出Excel 文件: ``` import * as XLSX from 'xlsx'; const data = [[1, 2, 3], [4, 5, 6]]; // 要导出数据 const ws = XLSX.utils.aoa_to_sheet(data); // 将数据转换为工作表 const wb = XLSX.utils.book_new(); // 创建新的工作簿 XLSX.utils.book_append_sheet(wb, ws, 'Sheet1'); // 将工作表添加到工作簿中 /* 导出工作簿 */ XLSX.writeFile(wb, 'data.xlsx'); // 将工作簿写入本地文件 ``` 在这段代码中,我们首先将数据转换为工作表,然后创建新的工作簿,并将工作表添加到工作簿中。最后,我们使用 `XLSX.writeFile()` 函数将工作簿写入本地文件。 注意:如果要在浏览器中导出数据并生成 Excel 文件,您还需要使用类似于 FileSaver.js 的库来保存文件。 希望这可以帮助您。 ### 回答2: 在JavaScript中,要导出数据生成Excel文件,可以使用第三方库如SheetJS或者ExcelJS。这些库可以帮助我们以xlsx格式生成Excel文件。 首先,需要引入对应的库文件。如果使用SheetJS,可以通过使用以下代码导入: ``` <script src="https://unpkg.com/xlsx/dist/xlsx.full.min.js"></script> ``` 然后,准备要导出数据。可以将数据存储在一个数组中,数组的每个元素代表Excel表格中的一行。 接下来,我们需要使用库中的函数来导出数据。 如果使用SheetJS,可以使用以下代码导出数据Excel文件: ``` var data = [ ['姓名', '年龄', '职业'], ['张三', 25, '工程师'], ['李四', 30, '设计师'], ['王五', 35, '经理'] ]; var ws = XLSX.utils.aoa_to_sheet(data); var wb = XLSX.utils.book_new(); XLSX.utils.book_append_sheet(wb, ws, 'Sheet1'); XLSX.writeFile(wb, 'output.xlsx'); ``` 以上代码将数据转换为SheetJS所需的数据结构,然后创建一个工作簿和工作表,并将数据写入工作表。最后,使用`writeFile`函数将工作簿保存为名为"output.xlsx"的文件。 如果使用ExcelJS,可以使用以下代码导出数据Excel文件: ``` var data = [ ['姓名', '年龄', '职业'], ['张三', 25, '工程师'], ['李四', 30, '设计师'], ['王五', 35, '经理'] ]; var workbook = new ExcelJS.Workbook(); var worksheet = workbook.addWorksheet('Sheet1'); data.forEach(function(row) { worksheet.addRow(row); }); workbook.xlsx.writeFile('output.xlsx'); ``` 以上代码创建了一个工作簿和工作表,并将数据添加到工作表中。最后,使用`writeFile`函数将工作簿保存为名为"output.xlsx"的文件。 通过使用这些库和相应的函数,可以轻松地将数据导出Excel文件。需要注意的是,由于浏览器安全限制,导出文件通常会保存在默认的下载文件夹中,而不是指定的路径。 ### 回答3: js导出数据生成excel的过程如下: 1、首先,需要引入支持excel导出的相关库,例如:xlsx、FileSaver等。 2、创建一个按钮或其他触发事件的元素,用于点击时触发导出excel的功能。 3、在相应的事件处理函数中,获取需要导出数据,可以是从服务器获取,也可以是本地数据。 4、将数据格式化为excel可识别的格式,一般是将数据保存为二维数组的形式,每个元素对应excel中的一行数据。 5、使用xlsx库中的方法,将数据生成excel文件。 6、通过FileSaver库中的方法,将生成的excel文件保存到本地。 7、导出excel完成。 下面是一个简单的示例代码: HTML部分: <button id="exportBtn">导出excel</button> JavaScript部分: <script src="xlsx.min.js"></script> <script src="FileSaver.min.js"></script> <script> var exportBtn = document.getElementById('exportBtn'); exportBtn.addEventListener('click', function() { // 获取需要导出数据 var data = [ ["姓名", "年龄", "性别"], ["张三", 20, "男"], ["李四", 25, "女"], ["王五", 30, "男"] ]; // 创建一个Workbook对象 var workbook = XLSX.utils.book_new(); // 将数据保存为Worksheet对象 var worksheet = XLSX.utils.aoa_to_sheet(data); // 将Worksheet对象添加到Workbook对象中 XLSX.utils.book_append_sheet(workbook, worksheet, "Sheet1"); // 将Workbook对象转换为blob对象 var wbout = XLSX.write(workbook, { type: 'blob', bookType: 'xlsx' }); // 保存blob对象为excel文件 saveAs(wbout, "export.xlsx"); }); </script> 以上代码实现了一个简单的导出excel的功能,点击按钮即可将数据导出excel文件,并保存到本地。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值