导出excel接口详细设计

上传人:jiups****uk12 文档编号:40144254 上传时间:2018-05-24 格式:DOC 页数:8 大小:122KB
返回 下载 相关 举报
导出excel接口详细设计_第1页
第1页 / 共8页
导出excel接口详细设计_第2页
第2页 / 共8页
导出excel接口详细设计_第3页
第3页 / 共8页
导出excel接口详细设计_第4页
第4页 / 共8页
导出excel接口详细设计_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《导出excel接口详细设计》由会员分享,可在线阅读,更多相关《导出excel接口详细设计(8页珍藏版)》请在金锄头文库上搜索。

1、第 1 页 共 8 页导出导出 excel 接口设计接口设计北京方正春元科技发展有限公司2009 年 3 月文档编号:当前版本:V1.0作者:Zwh发布日期:2009 年 03 月 31 日文件状态: 草稿 正式发布 正在修改第 2 页 共 8 页1 概述概述 1.1 描述描述原始需求描述原始需求描述: 描述:对于明细查询报表提供多报表导出到一个 excel 文件功能,每个报表对应一个 sheet,sheet 名称为对应报表的中文名称。 输入:excel 文件名、多个报表 ID 和对应输入参数 Map 输出:在 excel 中添加一个 sheet,该 sheet 名为对应报表中文名。导出时,不

2、需要弹出对话 框。 说明说明:用户数据量小,不考虑大数据量的性能问题。2 设计设计2.1 接口设计接口设计2.1.1 接口定义接口定义ReportCore 类增加一个接口: 接口函数:exportMutiSheetExcel(String mutiSheetExcelFile, Map reportIdParamMap); 函数说明:把报表集合导出到多 sheet excel 文件接口。把每个报表导出到 excel 的一个 sheet 中,sheet 的名字为报表的名称; 输入参数说明:mutiSheetExcelFile,导出 excel 的文件路径;reportIdParamMap,要导出

3、的报表 ID 和对应参数 map 的集合;2.1.2 接口调用代码示例接口调用代码示例接口代码示例如下,具体参考 ExportExcelTest 类: ReportCore reportCore = null;try /1.准备工作:/1.1传入的明细报表id和对应的输入参数map Map reportIdParamMap = new LinkedHashMap();/报表id=222222,输入参数为paramMap第 3 页 共 8 页Map paramMap = new HashMap();paramMap.put(“en_code“, “001001“);reportIdParamMa

4、p.put(“222222“, paramMap);/报表id=P00037,输入参数为null reportIdParamMap.put(“P00037“, null);/报表id=333333,输入参数为null reportIdParamMap.put(“333333“, null);/1.2传入的导出excel路径 String mutiSheetExcelFile = “c:test.xls“;/2.导出多sheetexcel/2.1新建ReportCore reportCore = new ReportCore(“222222“);/2.2导出多sheetexcel。/输入参数为:

5、mutiSheetExcelFile文件路径;reportIdParamMap为报表id和对应参数的map reportCore.exportMutiSheetExcel(mutiSheetExcelFile, reportIdParamMap); catch (Exception e) MessageBox.showErrorMessge(e, MessageBox.getMainFrame();finallyif(reportCore!=null)/释放 reportCore.release();2.2 接口实现设计接口实现设计多 sheet 导出 excel 实现,采用 jxl 第三方控

6、件; 实现设计:在 reportCore 中增加一个exportMutiSheetExcel 接口,实现多 sheetexcel导出。在该接口中先调用GroupReport_6_ReportCore 类的 excute 方法,得到生成 reportpagelist;再调用JXLExcelExporter 类的exportReportsToOneExcel 方法,导出数据到 excel 中。第 4 页 共 8 页2.2.1 ReportCore 类修改类修改ReportCore 类exportMutiSheetExcel(mutiSheetExcelFile, reportIdParamMap)

7、;说 明: /* reportname报表名称 zwh 20090331*/protected String reportName = “;/* 把报表集合导出到多sheet excel文件接口。把每个报表导出到excel的一个sheet中,sheet的名字为报表的名称* * param mutiSheetExcelFile,导出excel的文件路径;* param reportIdParamMap,要导出的报表ID和对应参数map的集合;* author zhangweihong* date 2009-3-31*/public void exportMutiSheetExcel(String

8、 mutiSheetExcelFile, Map reportIdParamMap)throws Exception JXLExcelExporter exporter = null;/ 1.创建一个excel。 exporter = new JXLExcelExporter(mutiSheetExcelFile);/ 2.循环生成报表数据的集合 if (reportIdParamMap != null) for (Iterator it = reportIdParamMap.entrySet().iterator(); it.hasNext();) Map.Entry entry = (Ma

9、p.Entry) it.next();/2.1从map中得到报表id和该报表id对应的参数map String tempReportId = (String) entry.getKey();Object obj = entry.getValue();Map paramMap = null;if(obj!=null)if(obj instanceof Map)paramMap = (Map)obj;/2.2根据id从服务端读取report Report report = null;第 5 页 共 8 页byte byteArray = null;byteArray = CommonOpFacto

10、ry.getOP().readReportByteByID(tempReportId);report = IoUtil.readReportFromByteArray(byteArray);/ 2.3 得到报表生成report数据集合 ReportCore reportCore = new ReportCore(report);/默认设置为查询模式reportCore.setQueryMode(ReportParameterConstants.QUERYMODE_1_STANDARD);/设置外部传入参数 if(paramMap!=null)reportCore.setParamMap(par

11、amMap);ReportDisplayPanel reportDisplay = new ReportDisplayPanel(reportCore);reportCore.execute(report);reportDisplay.repaintWithQueryPanel(); /得到总页数 int totalCount = reportCore.getTotalPageCount();List pageList = new ArrayList();if (totalCount 0) for (int j = 0; j * edit by zwh 20090331*/public voi

12、d exportReportsToOneExcel(List pageList,String reportName)throws Exception if (pageList = null)return;int sheetCount = 0;sheetCount = workBook.getNumberOfSheets();try /把多个报表导出到一个sheet中去/*记录导出的之前页的所有的行数,用于把多张报表到出到一个sheet中 */int currentRow = 0;for(int i=0;i this.getEachSheetRowNum()/计算加上当前报表后的走行数,需要进行

13、分页 sheetCount+;exportReportToSheet(report, 第 7 页 共 8 页sheetCount,0,reportName);currentRow = 0;elseexportReportToSheet(report, sheetCount,currentRow,reportName);currentRow = rowCount; catch (Exception e) throw e; finally / 写入文件 /this.writeWorkBookToFile();/* 把一张报表利用jxl写入工作表中* * param report* 报表对象* pa

14、ram sheetIndex* 工作表索引* param rowNum 记录之前的总的行数* * edit by zwh 20090331*/private void exportReportToSheet(Report report, int sheetIndex,int rowNum,String reportName)throws Exception rowHeightList = ReportHelper.getRowHeightList(report);columnWidthList = ReportHelper.getColumnWidthList(report);Writable

15、Sheet sheet = null;Iterator cells = report.cellIterator(); while(cells.hasNext() CellElement cellElement = (CellElement)cells.next(); if(rowNum != 0)/重新计算行数 cellElement = cellElement.deriveCellElement(cellElement.getColumn(),cellElement.getRow() + rowNum, cellElement.getColumnSpan(),第 8 页 共 8 页cellE

16、lement.getRowSpan(); /得到一个新的单元格/报表的名称 exportCellElemntToSheet(cellElement, columnWidthList, sheetIndex,reportName);sheet = workBook.getSheet(sheetIndex);if (sheet = null)return;/* 设置行高 */ int rowLastIndex = rowHeightList.getLastIndex();for (int i = 0; i = rowLastIndex; i+) double width = rowHeightList.get(i);if (width = 0) sheet.setRowVi

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 其它中学文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号