如何在spring mvc hibernate中使用jxl将数据库内容下载导入excel

堕落的唐僧 2014-05-14 07:54:48
后台用的框架,怎么才能用JXL把数据库中的统计日志记录下载保存为EXCEL文件呢。
求高手给个小例子指点下。。
...全文
317 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
小红蚂蚁 2016-04-22
  • 打赏
  • 举报
回复
楼主这个已经给你百分之八十了,不会改只能愿你自己了
堕落的唐僧 2014-05-19
  • 打赏
  • 举报
回复
加点分,有好心人帮忙吗
堕落的唐僧 2014-05-18
  • 打赏
  • 举报
回复
还是没解决啊
堕落的唐僧 2014-05-17
  • 打赏
  • 举报
回复
哎。。。继续顶
堕落的唐僧 2014-05-16
  • 打赏
  • 举报
回复
引用 14 楼 u010617434 的回复:
给你个我现在项目在用的

@SuppressWarnings("unchecked")
	@RequestMapping(value = "/huodongbm/export")
	public void exportOne(HttpServletRequest request,
			HttpServletResponse response, Model model) throws Exception {
		List<XsxmModel> list = new ArrayList<XsxmModel>();
		Map<String, Object> queryMap = (Map<String, Object>) request.getSession().getAttribute("map");
		list = xsxmService.querylistByQueryMap(queryMap);
		Map<HuodongModel, List<XsxmModel>> map = new HashMap<HuodongModel, List<XsxmModel>>();
		for (XsxmModel xsxm : list) {
			HuodongModel hd = xsxm.getHd();
			if (map.containsKey(hd)) {
				map.get(hd).add(xsxm);
			} else {
				List<XsxmModel> listtemp = new ArrayList<XsxmModel>();
				listtemp.add(xsxm);
				map.put(hd, listtemp);
			}
		}
		exportExcel(request, response, map);
	}

	@SuppressWarnings("unchecked")
	private void exportExcel(HttpServletRequest request,
			HttpServletResponse response, Map map) {
		String[] bt = new String[5];
		bt[0] = "活动";
		bt[1] = "项目";
		bt[2] = "学生";
		bt[3] = "报名人";
		bt[4] = "报名时间";
		// 设置导出excel的相关样式
		String fileName = "活动报名汇总.xls";
		response.setContentType("application/msexcel");// 定义输出类型
		try {
			fileName = new String(fileName.getBytes("gbk"), "ISO8859-1");// 解决中文
			// 文件名问题
		} catch (UnsupportedEncodingException e1) {
			e1.printStackTrace();
		}
		response.setHeader("content-disposition", "attachment; filename="
				+ fileName);// 设定输出文件头
		try {
			WritableWorkbook wwb;
			OutputStream os = response.getOutputStream();
			wwb = Workbook.createWorkbook(os);
			WritableSheet ws = wwb.createSheet("活动报名汇总", 0);
			ws.getSettings().setVerticalFreeze(1);// 第一行标题冻结。
			ws.getSettings().setVerticalFreeze(2);// 第一行标题冻结。
			// 表头样式
			WritableCellFormat headFormat = new WritableCellFormat(
					new WritableFont(WritableFont.ARIAL, 15, WritableFont.BOLD,
							false, UnderlineStyle.NO_UNDERLINE, Colour.GREEN));
			WritableCellFormat normalFont = new WritableCellFormat(
					new WritableFont(WritableFont.createFont("宋体"), 10));
			normalFont.setBorder(Border.ALL, BorderLineStyle.THIN);
			WritableCellFormat smallhead = new WritableCellFormat(
					new WritableFont(WritableFont.createFont("宋体"), 14,
							WritableFont.BOLD));
			smallhead.setAlignment(Alignment.CENTRE);
			for (int i = 0; i < bt.length; i++) {
				ws.setColumnView(i, 30);
			}
			ws.addCell(new Label(0, 0, "活动报名汇总", headFormat));// 表头
			// 表格标题
			for (int i = 0; i < bt.length; i++) {
				ws.addCell(new Label(i, 1, bt[i], smallhead));
			}
			int row = 2;
			// 数据区域
			ws.setColumnView(1, 15);
			Map<HuodongModel, List<XsxmModel>> maptemp = (Map<HuodongModel, List<XsxmModel>>) map;
			for (Entry<HuodongModel, List<XsxmModel>> entry : maptemp
					.entrySet()) {
				HuodongModel hd = entry.getKey();
				List<XsxmModel> list = entry.getValue();
				ws.mergeCells(0, row, 0, row + list.size() - 1);
				ws.addCell(new Label(0, row, hd.getHdmc() + "\r\n"
						+ hd.getHdfbsj() + "\r\n" + hd.getHddd(), normalFont));
				for (int i = 0; i < list.size(); i++) {
					ws.setRowView(row + i, 300);
					XsxmModel xsxm = list.get(i);
					XiangmuModel xm = xsxm.getXm();
					ws.addCell(new Label(1, row + i, xm.getXmmc(), normalFont));
					ws
							.addCell(new Label(2, row + i, xsxm.getXsgh() + "/"
									+ xsxm.getXsxm() + "/" + xsxm.getXsxy(),
									normalFont));
					ws.addCell(new Label(3, row + i, xsxm.getBmrgh() + "/"
							+ xsxm.getBmrxm(), normalFont));
					ws
							.addCell(new Label(4, row + i, xsxm.getBmsj(),
									normalFont));
				}
				row += list.size();
			}

			wwb.write();
			wwb.close();
			os.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

看着改下 应该会的吧
水平有限。。用不来
Lahne 2014-05-16
  • 打赏
  • 举报
回复
给你个我现在项目在用的

@SuppressWarnings("unchecked")
	@RequestMapping(value = "/huodongbm/export")
	public void exportOne(HttpServletRequest request,
			HttpServletResponse response, Model model) throws Exception {
		List<XsxmModel> list = new ArrayList<XsxmModel>();
		Map<String, Object> queryMap = (Map<String, Object>) request.getSession().getAttribute("map");
		list = xsxmService.querylistByQueryMap(queryMap);
		Map<HuodongModel, List<XsxmModel>> map = new HashMap<HuodongModel, List<XsxmModel>>();
		for (XsxmModel xsxm : list) {
			HuodongModel hd = xsxm.getHd();
			if (map.containsKey(hd)) {
				map.get(hd).add(xsxm);
			} else {
				List<XsxmModel> listtemp = new ArrayList<XsxmModel>();
				listtemp.add(xsxm);
				map.put(hd, listtemp);
			}
		}
		exportExcel(request, response, map);
	}

	@SuppressWarnings("unchecked")
	private void exportExcel(HttpServletRequest request,
			HttpServletResponse response, Map map) {
		String[] bt = new String[5];
		bt[0] = "活动";
		bt[1] = "项目";
		bt[2] = "学生";
		bt[3] = "报名人";
		bt[4] = "报名时间";
		// 设置导出excel的相关样式
		String fileName = "活动报名汇总.xls";
		response.setContentType("application/msexcel");// 定义输出类型
		try {
			fileName = new String(fileName.getBytes("gbk"), "ISO8859-1");// 解决中文
			// 文件名问题
		} catch (UnsupportedEncodingException e1) {
			e1.printStackTrace();
		}
		response.setHeader("content-disposition", "attachment; filename="
				+ fileName);// 设定输出文件头
		try {
			WritableWorkbook wwb;
			OutputStream os = response.getOutputStream();
			wwb = Workbook.createWorkbook(os);
			WritableSheet ws = wwb.createSheet("活动报名汇总", 0);
			ws.getSettings().setVerticalFreeze(1);// 第一行标题冻结。
			ws.getSettings().setVerticalFreeze(2);// 第一行标题冻结。
			// 表头样式
			WritableCellFormat headFormat = new WritableCellFormat(
					new WritableFont(WritableFont.ARIAL, 15, WritableFont.BOLD,
							false, UnderlineStyle.NO_UNDERLINE, Colour.GREEN));
			WritableCellFormat normalFont = new WritableCellFormat(
					new WritableFont(WritableFont.createFont("宋体"), 10));
			normalFont.setBorder(Border.ALL, BorderLineStyle.THIN);
			WritableCellFormat smallhead = new WritableCellFormat(
					new WritableFont(WritableFont.createFont("宋体"), 14,
							WritableFont.BOLD));
			smallhead.setAlignment(Alignment.CENTRE);
			for (int i = 0; i < bt.length; i++) {
				ws.setColumnView(i, 30);
			}
			ws.addCell(new Label(0, 0, "活动报名汇总", headFormat));// 表头
			// 表格标题
			for (int i = 0; i < bt.length; i++) {
				ws.addCell(new Label(i, 1, bt[i], smallhead));
			}
			int row = 2;
			// 数据区域
			ws.setColumnView(1, 15);
			Map<HuodongModel, List<XsxmModel>> maptemp = (Map<HuodongModel, List<XsxmModel>>) map;
			for (Entry<HuodongModel, List<XsxmModel>> entry : maptemp
					.entrySet()) {
				HuodongModel hd = entry.getKey();
				List<XsxmModel> list = entry.getValue();
				ws.mergeCells(0, row, 0, row + list.size() - 1);
				ws.addCell(new Label(0, row, hd.getHdmc() + "\r\n"
						+ hd.getHdfbsj() + "\r\n" + hd.getHddd(), normalFont));
				for (int i = 0; i < list.size(); i++) {
					ws.setRowView(row + i, 300);
					XsxmModel xsxm = list.get(i);
					XiangmuModel xm = xsxm.getXm();
					ws.addCell(new Label(1, row + i, xm.getXmmc(), normalFont));
					ws
							.addCell(new Label(2, row + i, xsxm.getXsgh() + "/"
									+ xsxm.getXsxm() + "/" + xsxm.getXsxy(),
									normalFont));
					ws.addCell(new Label(3, row + i, xsxm.getBmrgh() + "/"
							+ xsxm.getBmrxm(), normalFont));
					ws
							.addCell(new Label(4, row + i, xsxm.getBmsj(),
									normalFont));
				}
				row += list.size();
			}

			wwb.write();
			wwb.close();
			os.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

看着改下 应该会的吧
堕落的唐僧 2014-05-16
  • 打赏
  • 举报
回复
引用 12 楼 yys79 的回复:
上面已经给你回复了方法
WritableWorkbook wb = Workbook.createWorkBook(response.getOutputStream()); response cannot be resolved 要怎么修改,能帮帮我吗,之前代码也是网上找的
loveunittesting 2014-05-16
  • 打赏
  • 举报
回复
上面已经给你回复了方法
堕落的唐僧 2014-05-16
  • 打赏
  • 举报
回复
引用 9 楼 yys79 的回复:
[quote=引用 6 楼 u013794332 的回复:] 我现在能用JAVA指定路径生成EXCEL,怎么样在JSP中用按钮点击下载到任意路径呢。。
jxl早就不更新了,最好还是别用。至于怎么让用户下载,能把你代码贴上来吗 ?[/quote] 就在JSP里添加一个按钮点击下载,我的JAVA方法运行只能制定路径 import java.io.File; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import jxl.Workbook; import jxl.format.Colour; import jxl.format.UnderlineStyle; import jxl.write.Label; import jxl.write.WritableCellFormat; import jxl.write.WritableFont; import jxl.write.WritableSheet; import jxl.write.WritableWorkbook; public class Export { /** * 导出Excel * @param filePath 导出文件(模板)路径 * @param sql 导出的SQL语句 * @param startLine 起始行 * @param printTitle 是否打印标题 * @throws Exception */ public void doExport(String filePath , String sql , int startLine , boolean printTitle) throws Exception { Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); Connection conn = DriverManager.getConnection("jdbc:sqlserver://127.0.0.1:1433; DatabaseName=test", "admin", "admin"); //获取数据库连接 WritableWorkbook book = null ; WritableSheet sheet = null ; if(new File(filePath).exists()){ Workbook wb = Workbook.getWorkbook(new File(filePath)); book = Workbook.createWorkbook(new File(filePath), wb); // 添加一个工作表 sheet = book.getSheet(0); }else { book = Workbook.createWorkbook(new File(filePath)); // 第一步 sheet = book.createSheet("第一页", 0); // 创建Sheet } PreparedStatement pstm = conn.prepareStatement(sql); ResultSet rs = pstm.executeQuery(); //获取数据集 ResultSetMetaData rsmd = rs.getMetaData(); //获取表头 int colCnt = rsmd.getColumnCount(); //获取数据集的列数 if(printTitle){ /** * 定义单元格样式 */ WritableFont wf = new WritableFont(WritableFont.ARIAL, 15, WritableFont.BOLD, false, UnderlineStyle.NO_UNDERLINE,Colour.BLACK); // 定义格式 字体 下划线 斜体 粗体 颜色 WritableCellFormat wcf = new WritableCellFormat(wf); // 单元格定义 wcf.setBackground(jxl.format.Colour.BLACK); // 设置单元格的背景颜色 wcf.setAlignment(jxl.format.Alignment.CENTRE); // 设置对齐方式 sheet.setRowView(startLine, 1000); // 设置行的高度 //打印标题头 for(int k = 1; k < colCnt + 1; k++){ String title = rsmd.getColumnName(k); Label labelTitle = new Label( k-1 , startLine , title , wcf); sheet.setColumnView(k-1 , 25); // 设置列的宽度 sheet.addCell(labelTitle); } startLine++ ; } //打印sql语句查出来的数据 while (rs.next()) { for (int j = 1; j < colCnt+1; j++) { String colName = rsmd.getColumnName(j); String colValue = rs.getString(colName); Label label = new Label(j-1, startLine, colValue); sheet.addCell(label); } startLine++; } book.write(); book.close(); pstm.close(); conn.close(); } /** * 导出Excel * @param filePath 导出文件模板路径 * @param sql 导出的SQL语句 * @throws Exception */ public void doExport(String filePath , String sql) throws Exception{ doExport(filePath , sql , 0 , true); } public static void main(String[] args) throws Exception { String filePath = "e:\\1.xls"; StringBuffer sql = new StringBuffer(); sql.append(" select log.name 姓名 , log.age 年龄 from log"); Export impExcel = new Export(); impExcel.doExport(filePath, sql.toString()); //impExcel.doExport(filePath, sql.toString() , 1 ,false); } }
loveunittesting 2014-05-16
  • 打赏
  • 举报
回复
WriteableWorkBook wb = WorkBook.createWorkBook(response.getOutputStream()); ...... wb.wite();
loveunittesting 2014-05-16
  • 打赏
  • 举报
回复
引用 6 楼 u013794332 的回复:
我现在能用JAVA指定路径生成EXCEL,怎么样在JSP中用按钮点击下载到任意路径呢。。
jxl早就不更新了,最好还是别用。至于怎么让用户下载,能把你代码贴上来吗 ?
堕落的唐僧 2014-05-15
  • 打赏
  • 举报
回复
我现在能用JAVA指定路径生成EXCEL,怎么样在JSP中用按钮点击下载到任意路径呢。。
堕落的唐僧 2014-05-15
  • 打赏
  • 举报
回复
睡前再顶一次。。求帮助
tony4geek 2014-05-15
  • 打赏
  • 举报
回复
excel 的操作 poi 等很多都可以 的。
堕落的唐僧 2014-05-15
  • 打赏
  • 举报
回复
有人会吗。。
堕落的唐僧 2014-05-15
  • 打赏
  • 举报
回复
顶上去。。。
堕落的唐僧 2014-05-14
  • 打赏
  • 举报
回复
求个简单明了的例子。。急用
loveunittesting 2014-05-14
  • 打赏
  • 举报
回复
网上多的是。但是不知道和spring mvc hibernate这些有什么关系?
堕落的唐僧 2014-05-14
  • 打赏
  • 举报
回复
就是在JSP中点一个按钮,把后台数据库的内容下载保存为EXCEL,怎么做呢。。
源码链接: https://pan.quark.cn/s/0f7c75cb3aad ### MIPI Video Mode 与 Command Mode 的差异 #### 一、引言 MIPI (Mobile Industry Processor Interface) 是一种用于连接移动设备处理器及其外围设备的标准化接口。MIPI 接口支持多种协议,其包含 DSI (Display Serial Interface) 和 DCS (Display Control Interface) 等协议。在 MIPI 接口的应用,主要涉及两种工作模式:Video Mode(视频模式)和 Command Mode(命令模式)。本文旨在系统性地阐述这两种模式的工作机制、特性以及实际应用环境。 #### 二、LCD RAM 概念说明 在进一步探讨 MIPI 的两种模式之前,有必要对文提及的“LCD RAM”概念进行明确。实际上,“LCD RAM”并非一个通用术语,而是本文作者用来描述 LCD 控制器用于存储显示数据的内存区域。LCD(Liquid Crystal Display,液晶显示屏)通常配备一个控制 IC(Integrated Circuit,集成电路),该控制 IC 可能内置 RAM 以缓存显示数据。 #### 三、MIPI Video Mode(视频模式) **定义:** - 视频模式是一种类似于传统 RGB 接口的工作模式,它要求主机持续不断地向显示器传输刷新数据。 - 在这种模式下,数据和控制信号以报文的形式通过 MIPI 总线进行传输。 - 显示器本身无需配备帧缓冲器,因为主机会周期性地刷新屏幕。 **特点:** 1. **实时性高:** 主机需要不...
源码下载地址: https://pan.quark.cn/s/a4b39357ea24 在电磁模拟技术,CST(Computer Simulation Technology)是一种被广泛采纳的软件工具,它主要用于电磁场、微波、天线以及射频系统的设计工作。本资料将详细分析CST软件离散端口的具体配置方法,这些方法对于提升仿真结果的精确度和专业水准具有决定性作用。离散端口在CST软件扮演着模拟信号输入或输出的重要角色,它们构成了仿真模型不可或缺的部分。在配置离散端口时,一个核心的原则是保证端口的方向与网格线保持一致,这是因为这样做能够有效降低计算过程产生的误差,并确保仿真数据的有效性。如果未能遵循这一指导原则,可能会引发未知的计算问题,进而导致仿真结果失去可靠性。 在CST软件配置离散端口,通常需要借助“Pick Points”这一功能。通过选择“Pick Edge Center”选项,端口将被设定在模型边缘的心位置上。然而,这种做法并不总是能够确保端口与网格线保持平行。在某些特定情形下,模型的几何构造可能不允许直接选取一个与网格线平行的边作为端口的安装位置。 为了克服这一挑战,可以采用多种不同的策略。如果模型本身已经包含一条与馈电口平行的边,那么可以直接利用这条边来建立端口,此时CST软件会自动调整端口使其与网格线对齐。另一种可选的方法是,当模型不具备现成的平行边时,用户可以手动构建一个几何结构,比如一个立方体,并使其边缘与馈电口平行。通过这种方式,新建立的几何结构的边缘就可以作为端口的位置,从而确保端口与网格线的平行关系。 在实施上述操作时,必须关注端口尺寸的合理性和物理意义的一致性。端口的尺寸应当依据实际天线馈电部分的尺寸进行适当调整,过大的端口或...

81,111

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧