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

堕落的唐僧 2014-05-14 07:54:48
后台用的框架,怎么才能用JXL把数据库中的统计日志记录下载保存为EXCEL文件呢。
求高手给个小例子指点下。。
...全文
256 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,怎么做呢。。
以用户管理为例,结合spring struts hibernate dwr jstl做的实例,struts hibernate dwr 与Spring完全结合,实现用户列表、信息增、删、改、查、维护时用户重名提示等功能,还包括页面自动转码设置(web.xml),Hibernate管理服务按Bean名称拦截并进行Spring事务管理,完全由Spring接管DWR AJAX处理(不需要配置dwr.xml)等技术点
源码在/mytest/WEB-INF/src下
Winxp sp3+JDK1.6+Tomcat 6.0下运行通过
因文件长度限制,未加入相关类库,请自行加入,需要的类库有:
dom.jar
dwr-2.0.rc2.jar
jaxen-full.jar
jaxp-api.jar
jdbc2_0-stdext.jar
jstl.jar
mail.jar
mysql-connector-java-5.0.4-bin.jar
sax.jar
saxpath.jar
standard.jar
xalan.jar
xercesImpl.jar
antlr-2.7.6rc1.jar
asm.jar
asm-attrs.jar
cglib-2.1.3.jar
commons-collections-2.1.1.jar
commons-logging-1.0.4.jar
dom4j-1.6.1.jar
ehcache-1.1.jar
hibernate3.jar
jaas.jar
jaxen-1.1-beta-7.jar
jta.jar
log4j-1.2.11.jar
xerces-2.6.2.jar
xml-apis.jar
spring-beans.jar
spring-context.jar
spring-core.jar
commons-attributes-api.jar
commons-attributes-compiler.jar
commons-logging.jar
log4j-1.2.14.jar
spring-dao.jar
spring-hibernate3.jar
spring-ibatis.jar
spring-jdbc.jar
spring-jdo.jar
spring-jpa.jar
spring-toplink.jar
persistence.jar
spring-aop.jar
spring-agent.jar
spring-tomcat-weaver.jar
asm-commons-2.2.3.jar
asm-util-2.2.3.jar
aspectjrt.jar
aspectjweaver.jar
aopalliance.jar
cglib-nodep-2.1_3.jar
jakarta-oro-2.0.8.jar
spring-struts.jar
spring-web.jar
spring-webmvc.jar
spring-portlet.jar
struts.jar
commons-fileupload.jar
commons-httpclient.jar
freemarker.jar
jasperreports-1.3.3.jar
commons-io.jar
portlet-api.jar
jxl.jar
itext-1.3.jar
poi-2.5.1.jar
cos.jar
velocity-1.5.jar
velocity-tools-view-1.3.jar
commons-codec.jar
antlr.jar
commons-beanutils.jar
commons-digester.jar
commons-validator.jar
jakarta-oro.jar
commons-beanutils-1.7.0.jar
结业时所做。。参考用,虽然不咋地,但是有些技能实现的方法可以借鉴。。。上传的lib包需要加入以下文件,因为容量过大,没有上传,请见谅! antlr-2.7.6.jar antlr-2.7.6rc1.jar aopalliance.jar asm.jar asm-attrs.jar asm-commons-2.2.3.jar asm-util-2.2.3.jar aspectjrt.jar aspectjweaver.jar c3p0-0.9.0.jar c3p0-0.9.1.jar cglib-2.1.3.jar cglib-nodep-2.1_3.jar classes12.jar commons-attributes-api.jar commons-attributes-compiler.jar commons-beanutils.jar commons-codec.jar commons-collections-2.1.1.jar commons-collections.jar commons-dbcp.jar commons-fileupload.jar commons-httpclient.jar commons-io.jar commons-logging-1.0.4.jar commons-logging-1.1.jar commons-logging.jar commons-pool.jar concurrent-1.3.2.jar connector.jar cos.jar dom4j-1.6.1.jar dwr.jar ehcache-1.1.jar ehcache-1.2.3.jar FCKeditor-2.3.jar freemarker.jar hibernate3.jar itext-1.3.jar jaas.jar jacc-1_0-fr.jar jakarta-oro-2.0.8.jar jasperreports-1.3.4.jar javassist.jar jaxen-1.1-beta-7.jar jboss-cache.jar jboss-common.jar jboss-jmx.jar jboss-system.jar jdbc2_0-stdext.jar jgroups-2.2.8.jar jstl.jar jta.jar jxl.jar log4j-1.2.11.jar log4j-1.2.14.jar mysql-connector-java-3.1.13-bin.jar Oracle10g.jar oscache-2.1.jar persistence.jar poi-2.5.1.jar portlet-api.jar proxool-0.8.3.jar spring-agent.jar spring-aop-2.0.xsd spring-aop.jar spring-beans-2.0.xsd spring-beans.jar spring-context.jar spring-core.jar spring-dao.jar spring-hibernate3.jar spring-ibatis.jar spring-jdbc.jar spring-jdo.jar spring-jpa.jar spring-portlet.jar spring-struts.jar spring-tomcat-weaver.jar spring-toplink.jar spring-web.jar spring-webmvc.jar standard.jar struts.jar swarmcache-1.0rc2.jar velocity-1.5.jar velocity-tools-view-1.3.jar xalan.jar xerces-2.6.2.jar xml-apis.jar
java各种lib包 文件夹 PATH 列表 卷序列号为 0006-7DBB E:. antlr-2.7.7.jar aopalliance-1.0.jar aspectjweaver.jar c3p0-0.9.1.jar cglib-2.1.3.jar commons-beanutils.jar commons-codec-1.9.jar commons-collections-3.1.jar commons-dbcp-1.2.1.jar commons-fileupload-1.2.1.jar commons-httpclient-3.1-rc1.jar commons-io-1.4.jar commons-io-2.0.1.jar commons-lang.jar commons-lang3-3.1.jar commons-logging-1.1.1.jar commons-logging.jar commons-pool-1.2.jar dom4j-1.6.1.jar ehcache-core-2.4.3.jar ezmorph-1.0.6.jar hibernate-c3p0-4.1.10.Final.jar hibernate-commons-annotations-4.0.1.Final.jar hibernate-core-4.1.10.Final.jar hibernate-ehcache-4.1.10.Final.jar hibernate-entitymanager-4.1.10.Final.jar hibernate-jpa-2.0-api-1.0.1.Final.jar httpclient-4.2.5.jar httpcore-4.2.4.jar httpmime-4.2.5.jar IKKSegment.jar jackson-all-1.9.11.jar jackson-annotations-2.2.2.jar jackson-core-2.2.2.jar jackson-core-asl-1.4.3.jar jackson-databind-2.2.2.jar jackson-datatype-hibernate4-2.2.2.jar jackson-mapper-asl-1.4.3.jar javaee.jar javassist-3.15.0-GA.jar jboss-logging-3.1.0.GA.jar jboss-transaction-api_1.1_spec-1.0.0.Final.jar jcommon-1.0.17.jar je-analysis-1.5.3.jar json-lib-2.2.3.jar json_simple-1.1.jar jsoup-1.7.2.jar jstl-1.2.jar jxl.jar kaptcha-2.3.2-jdk14.jar kaptcha-2.3.2.jar lib.txt log4j-1.2.16.jar mysql-connector-java-5.1.17-bin.jar ojdbc14.jar org.json.jar oscache-2.4.jar quartz-1.8.0.jar sdk-6.1.0.jar slf4j-api-1.6.1.jar slf4j-api-1.6.6.jar slf4j-log4j12-1.6.6.jar spring-aop-3.2.3.RELEASE.jar spring-aspects-3.2.3.RELEASE.jar spring-beans-3.2.3.RELEASE.jar spring-context-3.2.3.RELEASE.jar spring-context-support-3.2.3.RELEASE.jar spring-core-3.2.3.RELEASE.jar spring-expression-3.2.3.RELEASE.jar spring-instrument-3.2.3.RELEASE.jar spring-jdbc-3.2.3.RELEASE.jar spring-orm-3.2.3.RELEASE.jar spring-tx-3.2.3.RELEASE.jar spring-web-3.2.3.RELEASE.jar spring-webmvc-3.2.3.RELEASE.jar standard.jar

81,094

社区成员

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

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