- 浏览: 284016 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
u011563440:
u011563440 写道用反射A.class.toGener ...
Java接口中的内部接口和接口中的内部类 -
u011563440:
用反射A.class.toGenericString()--- ...
Java接口中的内部接口和接口中的内部类 -
narutolby:
因为接口本身不能实例化,所以在new 一个 接口的内部类时默认 ...
Java接口中的内部接口和接口中的内部类 -
hekuilove:
请问楼主,第四部如何做?在eclipse哪个位置?
eclipse中使用maven插件的问题:Updating index central|http://repo1.maven.org/maven2 -
小小生:
请问下,如果修改了数据库里面的订单任务的时间,那么不是要重启? ...
利用Spring动态对Quartz定时任务管理
转:http://lqw.iteye.com/blog/528123
用flex实现客户端导出报表数据到excel的,实现步骤如下:
jxls下载地址
http://jxls.sourceforge.net/
1. flex端代码
<mx:Script> <![CDATA[ import net.shopin.service.ReportService; import net.shopin.vo.DateKeyVO; import mx.controls.Alert; [Bindable] private var sales:Array=new Array; public function check():Boolean { if (start.text == "" || end.text == "") { Alert.show("请您选择起始和结束日期"); return false; } else { var dateKeyVO:DateKeyVO=new DateKeyVO(); dateKeyVO.startDate=DateField.stringToDate(start.text, "YYYY-MM-DD"); dateKeyVO.endDate=DateField.stringToDate(end.text, "YYYY-MM-DD"); if (dateKeyVO.startDate.getFullYear() > dateKeyVO.endDate.getFullYear()) { Alert.show("您选择结束日期小于起始日期"); return false; } else { if (dateKeyVO.startDate.getMonth() > dateKeyVO.endDate.getMonth() && dateKeyVO.startDate.getFullYear() == dateKeyVO.endDate.getFullYear()) { Alert.show("您选择结束日期小于起始日期"); return false; } else { if (dateKeyVO.startDate.getDate() > dateKeyVO.endDate.getDate() && dateKeyVO.startDate.getFullYear() == dateKeyVO.endDate.getFullYear() && dateKeyVO.startDate.getMonth() == dateKeyVO.endDate.getMonth()) { Alert.show("您选择结束日期小于起始日期"); return false; } else { return true; } } } } } //查询报表数据 public function search():void { var flag:Boolean=check(); if (flag == true) { var dateKeyVO:DateKeyVO=new DateKeyVO(); dateKeyVO.startDate=DateField.stringToDate(start.text, "YYYY-MM-DD"); dateKeyVO.endDate=DateField.stringToDate(end.text, "YYYY-MM-DD"); var backService:ReportService=new ReportService(result); backService.getRefunReport(dateKeyVO); } } //查询返回数据 public function result(data:Object):void { sales=data as Array; refunGrid.dataProvider=sales; } //导出报表数据到客户端供下载 public function export():void{ var flag:Boolean=check(); if (flag == true) { var start:String=start.text; var end:String=end.text; navigateToURL(new URLRequest("http://localhost:80/web/getRefunReport/" + start + "/" + end + "/report.xls"), "_blank"); } } //导出报表数据到服务器 public function exportToServer():void { var flag:Boolean=check(); if (flag == true) { var dateKeyVO:DateKeyVO=new DateKeyVO(); dateKeyVO.reportType="退货报表"; dateKeyVO.startDate=DateField.stringToDate(start.text, "YYYY-MM-DD"); dateKeyVO.endDate=DateField.stringToDate(end.text, "YYYY-MM-DD"); var backService:ReportService=new ReportService(resultExport); backService.toExport(dateKeyVO); } } public function resultExport(data:Object):void { var flag:Boolean=data as Boolean; if (flag) { Alert.show("成功导出退货报表到服务器D盘,稍后下载"); } else { Alert.show("导出报表失败"); } } //合计汇总数据列 public function sumFunction(col:DataGridColumn):String { var n:int=sales.length; var sum:Number=0; for (var i:int=0; i < n; i++) { sum+=sales[i][col.dataField]; } return sum.toFixed(2); } ]]> </mx:Script> <mx:Label x="222" y="30" text="退货日期 从"/> <mx:Label x="437" y="30" text="到"/> <mx:Button x="614" y="30" label="查询" click="search()"/> <mx:Button x="715" y="30" label="导出报表到Execl" click="export()"/> <mx:DateField id="start" x="313" y="28" yearNavigationEnabled="true" dayNames="['日','一','二','三','四','五','六']" monthNames='["一","二","三","四","五","六","七","八","九","十","十一","十二"]' formatString="YYYY-MM-DD"/> <mx:DateField id="end" x="482" y="28" yearNavigationEnabled="true" dayNames="['日','一','二','三','四','五','六']" monthNames='["一","二","三","四","五","六","七","八","九","十","十一","十二"]' formatString="YYYY-MM-DD"/>
2. 用spring mvc 实现的java端控制层
@Controller public class LoadExcelController { @Autowired BackControlService backService; @RequestMapping(value = "/getSaleReport/{start}/{end}/report.xls", method = RequestMethod.GET) public String getSaleReport(Model m,@PathVariable("start") String start,@PathVariable("end") String end) { DateKeyVO dateKeyVO = new DateKeyVO(); SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd"); //把地址栏传过来的字符串转换成日期 try { Date start1 = f.parse(start); Date end1 = f.parse(end); dateKeyVO.setStartDate(start1); dateKeyVO.setEndDate(end1); } catch (ParseException px) { px.printStackTrace(); } //获得service层查询的报表数据 List<SaleReportVO> list = backService.getSaleReport(dateKeyVO); //找到报表的模板 m.addAttribute("Template", "/templates/sale.xls"); m.addAttribute("list", list); return "excelView"; } }
模板sale.xls代码
销售日期 订单号 销售单号 <jx:forEach var="sale" items="${list}"> ${sale.saleTime}${sale.orderNumber} ${sale.saleNO} </jx:forEach>
3.控制层return "excelView"映射
views.properties,views_zh_CN.properties
excelView.(class)=com.shopin.modules.web.view.ExcelView
ExcelView 代码
package com.shopin.modules.web.view; import java.util.List; import java.util.Map; import java.util.ArrayList; import java.util.HashMap; import java.io.*; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.ServletOutputStream; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.springframework.web.servlet.view.document.AbstractExcelView; import org.springframework.web.servlet.view.AbstractView; import org.springframework.util.ResourceUtils; import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.Resource; import net.sf.jxls.transformer.XLSTransformer; /** * 数据导出到Excel中 */ public class ExcelView extends AbstractView { public ExcelView() { super(); setContentType("application/vnd.ms-excel"); } @Override protected final void renderMergedOutputModel( Map<String, Object> model, HttpServletRequest request, HttpServletResponse response) throws Exception { Resource resource = new ClassPathResource((String) model.get("Template")); HSSFWorkbook book = new XLSTransformer().transformXLS(resource.getInputStream(), model); response.setContentType(getContentType()); ServletOutputStream out = response.getOutputStream(); book.write(out); out.flush(); } }
4.java端service层代码
public List<SaleReportVO> getSaleReport(DateKeyVO dateKeyVO) { Session session = null; Transaction tx = null; List<SaleReportVO> listVO = new ArrayList<SaleReportVO>(); try { session = sessionFactory.openSession(); tx = session.beginTransaction(); Query query = session.createSQLQuery(ReportSQL.salesSQL); query.setDate(0,dateKeyVO.getStartDate()); query.setDate(1,dateKeyVO.getEndDate()); List list = query.list(); for (int i = 0; i < list.size(); i++) { Object[] objs = (Object[]) list.get(i); // SalesBean salesBean=new SalesBean((String)objs[0],((BigDecimal)objs[1]).doubleValue(),((BigDecimal)objs[2]).doubleValue(),((BigDecimal)objs[3]).doubleValue(),((BigDecimal)objs[4]).doubleValue(),((BigDecimal)objs[5]).doubleValue(),((BigDecimal)objs[6]).doubleValue(),((BigDecimal)objs[7]).doubleValue(),((BigDecimal)objs[8]).doubleValue(),((BigDecimal)objs[9]).doubleValue(),((BigDecimal)objs[10]).doubleValue(),((BigDecimal)objs[11]).doubleValue(),(String)objs[12],(String)objs[13],(String)objs[14],(String)objs[15],(String)objs[16],(String)objs[17]); SaleReportVO salesBean = new SaleReportVO(); if (objs[0] != null) { salesBean.setSaleTime(((Date) objs[0]).toString()); } if (objs[1] != null) { salesBean.setOrderNumber((String) objs[1]); } if (objs[2] != null) { salesBean.setSaleNO((String) objs[2]); } //把数据库中查询出的BigDecimal类型转换成Double类型 if (objs[3] != null) { salesBean.setSaleNum(((BigDecimal) objs[3]).doubleValue()); } if (objs[4] != null) { salesBean.setOrderSum(((BigDecimal) objs[4]).doubleValue()); } if (objs[5] != null) { salesBean.setProductSale(((BigDecimal) objs[5]).doubleValue()); } if (objs[6] != null) { salesBean.setSendCost(((BigDecimal) objs[6]).doubleValue()); } if (objs[7] != null) { salesBean.setRealCost(((BigDecimal) objs[7]).doubleValue()); } listVO.add(salesBean); } } catch (Exception e) { if (session != null && tx != null && session.isOpen()) { tx.rollback(); } e.printStackTrace(); } finally { if (session != null && session.isOpen()) { session.close(); } } return listVO; }
=================================================================
ExcelServlet.java
<!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --> package test; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFRichTextString; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; public class ExcelServlet extends HttpServlet { private static final long serialVersionUID = 1407382389107180200L ; @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doMainDispatch(req, resp); } @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doMainDispatch(req, resp); } protected void doMainDispatch(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String filename = " excel.xls " ; resp.reset(); resp.setCharacterEncoding( " UTF-8 " ); resp.setContentType( " application/vnd.ms-excel " ); resp.addHeader( " Content-Disposition " , " attachment; filename=\" " + filename + " \" " ); HSSFWorkbook wb = generateExcel(); wb.write(resp.getOutputStream()); resp.getOutputStream().flush(); } private HSSFWorkbook generateExcel() { HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet sheet = wb.createSheet( " Sheet1 " ); HSSFRow row = sheet.createRow( 0 ); HSSFCell cell = row.createCell(( short ) 0 ); cell.setCellValue( new HSSFRichTextString( " Excel " )); return wb; } }
web.xml中加入:
<!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --> < servlet > < servlet-name > Excel Servlet </ servlet-name > < servlet-class > test.ExcelServlet </ servlet-class > < load-on-startup > 1 </ load-on-startup > </ servlet > < servlet-mapping > < servlet-name > Excel Servlet </ servlet-name > < url-pattern > /DownloadExcel </ url-pattern > </ servlet-mapping >
Download.mxml
<!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --> <? xml version = " 1.0 " encoding = " utf-8 " ?> < mx:Application xmlns:mx = " http://www.adobe.com/2006/mxml " layout = " absolute " > < mx:Script > <! [CDATA[ import flash.net.FileReference; import flash.net.URLRequest; private var fileReference:FileReference = null ; private function download(): void { var request:URLRequest = new URLRequest( " http://localhost:8080/xxx/DownloadExcel " ); fileReference = new FileReference(); fileReference.download(request, " excel.xls " ); } ]] > < / mx:Script> < mx:Button label = " Download " click = " download() " / > < / mx:Application>
发表评论
-
Servlet接口
2010-11-10 17:43 2185http://book.51cto.com/art/20081 ... -
servlet 运行过程
2010-11-10 10:06 2155Servlet 运行在servlet 容器中,其生命 ... -
web.xml 中的listener、 filter、servlet 加载顺序及其详解
2010-11-08 10:23 1275一、 1、启动一个WEB项 ... -
Cairngorm中Command、Delegate、Service交互详解
2010-05-20 14:04 1565Command、Delegate、Service这三者的关系简 ... -
J2EE中的异常管理及错误跟踪框架一(图)
2010-05-20 12:17 1737摘要 回顾一下你上一个J2EE工程,是否碰到过类似 ... -
J2EE中的异常管理及错误跟踪框架二(图)
2010-05-20 12:17 1347来源:http://www.bitscn.com/pdb/ja ... -
简单EXCEL报表方案:Spring+POI
2010-05-12 22:52 2277近期为完成一个简单的报表模块,需求很简单,从数据库中取出数据导 ...
相关推荐
在IT行业中,将数据从应用程序导出到常见格式如Excel是一种常见的需求,这有助于数据分析、报表制作和数据共享。在本场景中,我们将探讨如何利用ASP(Active Server Pages)架构来实现这一功能,特别是针对Flex中的...
在Flex和Java结合的环境中,实现Excel导出是一项常见的需求,尤其在数据分析和报表生成时。以下是关于这个主题的关键知识点: 1. **Flex与Java的交互**:Flex是一种基于Adobe Flash Player运行时的富互联网应用...
Flex客户端通过 BlazeDS 或 Adobe LiveCycle Data Services 与Java后端服务进行AMF通信,发送请求来导入或导出Excel文件。Java服务器端使用POI处理文件,然后将结果以AMF格式返回给Flex前端。 4. **具体步骤**: -...
3. **生成PDF**:在Flex客户端,通过HTTP服务请求服务器上的jasperreports服务,将填充好的报表转换为PDF格式。这里可能需要设置一些参数,如PDF的页面大小、方向、边距等。 4. **使用alivepdf**:在Flex应用中引入...
4. **数据导入导出**:在Flex应用中,结合POI可以实现从Excel文件导入数据到数据库,或者将数据库结果导出为Excel文件,为用户提供方便的数据管理工具。 5. **性能优化**:POI 提供了流式处理API,如SXSSF,用于...
### Style Report报表软件智能数据填报的关键特性解析 #### 一、通用性和易用性 - **Flex技术的应用**:Style Report报表软件采用了Flex技术,这是一种跨平台的开发框架,能够提供丰富的互联网应用体验。Flex技术...
- 报表导出接口:支持自动导出报表为多种格式,如Word、Excel、PDF。 五、快速上手 1. 打开报表设计器:启动设计工具,进入报表设计环境。 2. 配置数据集:连接数据库,定义报表所需数据。 3. 设计报表模板:使用...
2. **Datagrid数据导出**:可以方便地将Flex Datagrid中的数据快速导出为Excel格式,非常适合于报表生成或数据分析场景。 3. **多工作表操作**:支持在一个Excel文件中创建多个工作表,每个工作表可以独立管理数据...
FlexWebReport是一个基于Flex技术的报表系统,它主要用于在Web环境中生成和导出表格数据到多种格式的文档。Flex是一种由Adobe开发的开源框架,主要应用于创建富互联网应用程序(RIA)。这个系统的核心特性是它的灵活...
在实际项目中,as3xls库可以应用于在线报表工具、数据导入/导出功能、数据可视化应用,甚至教育软件中创建互动练习和测试。由于它直接在客户端运行,用户可以在不离开浏览器的情况下进行数据操作,提高了用户体验。 ...