`
3Seefans
  • 浏览: 21709 次
  • 性别: Icon_minigender_1
  • 来自: 广州
最近访客 更多访客>>
社区版块
存档分类
最新评论

jxl导出excel实践

阅读更多

最近做了些导出excel,主要分两种,直接导出和根据模板导出两种形式。
值得导出就不说了,网上比较多的例子,
模板导出还是有点意思.
1.先看要导出的模板:

${exportTitle}
编号:QDZB-6.3-06
序号 设备名称 型号规格 启用年份 原值(万元) 安装地点 使用单位 当前技术状况评估
${serialNumber} ${assetName} ${model} ${usingDate} ${preValue} ${installPlace}  ${usingOuName} ${assetStatusCn}
${applicantName} ${depCommentName} ${zbbmCommentName}


其中1,2,5行的数据是固定的,第4行动数据是动态生成的,也就是可以循环得出结果。


2.我这里设想就是提供一个通用的导出excel类,用于公用。

比如:ExcelUtils.getInstance().createXlsFileWithList(tplXlsFilePath, list, outputStream, parameters, dataRowIndex);


tplXlsFilePath:模板的路径,list要循环的数据集合,parameters 是Map对象,存的是不需要循环的数据,dataRowIndex:是指第几行要循环。


3.现在看createXlsFileWithList方法,里面有代码解释,其匹配过程是通过Ognl:
/**
  * 根据Xls模板文件创建并填充数据
  * @param templateXlsFilePath 获取xls模板文件的路径 
  * @param dataSourceList 填充的数据对象
  * @param exportFilePath  要导出的文件路径
  * @param parameters 传入的参数
  * @param dataRowIndex 数据起始行索引
  * @return
  * @throws EgrandException 
  */
 public void createXlsFileWithList(String templateXlsFilePath,List dataSourceList,String exportFilePath,Map parameters,int dataRowIndex) throws EgrandException{   
  if(null == templateXlsFilePath || templateXlsFilePath.length() == 0 || null == dataSourceList || dataSourceList.isEmpty())
   return ;  
  logger.debug(" dataSourceList size :"+dataSourceList.size());
  logger.debug(" templateXlsFilePath :"+templateXlsFilePath);   
  try {  
   logger.debug(" exportFilePath :"+exportFilePath);
   //创建导出文件的目录
   File exportFile=new File(exportFilePath.substring(0,exportFilePath.lastIndexOf("/")));
   logger.debug(" exportFile value:"+exportFile+" path :"+exportFilePath.substring(0,exportFilePath.lastIndexOf("/")));
   if(!exportFile.exists() || !exportFile.isDirectory()){
    exportFile.mkdirs();    
   }
   FileOutputStream outStream = new FileOutputStream(exportFilePath);
   //定义正则表达式匹配对象
   Pattern pattern = Pattern.compile("\\$\\{(.*)\\}");  
   // Excel获得文件
   Workbook templateWorkbook = Workbook.getWorkbook(new File(templateXlsFilePath));
   // 打开一个文件的副本,并且指定数据写回到原文件
   WritableWorkbook book = Workbook.createWorkbook(outStream, templateWorkbook);
   // 添加一个工作表
   WritableSheet sheet = book.getSheet(0);
   //获取工作表格中的行数
   int rows = sheet.getRows();
   //获取工作表格中的列数
   int cols = sheet.getColumns();
   //正则表达式的匹配对象
   Matcher matcher=null;
   //单元格的格式对象
   CellFormat cellFormat=null;
   //获取数据表达式
   Map patternColumMap=new HashMap();
   
   //单元格对象
   Cell curCell=null;
   for (int row = 0; row 0)
     sheet.insertRow(currDataStartRowIndex);
    for(Iterator patternColIterator=patternColumMap.keySet().iterator();patternColIterator.hasNext();){    
     String patternColumnName=(String)patternColIterator.next();
     Object value=null;
     try{
      value = Ognl.getValue(patternColumnName, domain);
      logger.debug(" property name :"+patternColumnName+" value:"+value);       
     }catch(OgnlException ex){
      ex.printStackTrace();
     }  
     Label tempLabel=(Label)patternColumMap.get(patternColumnName);    
     sheet.addCell(new Label(tempLabel.getColumn(), currDataStartRowIndex, null == value ? "" : value.toString(),tempLabel.getCellFormat()));
     colIndex++;
    }
    
    index++;
   }
   book.write();
   book.close();
   outStream.flush();
   outStream.close();   
  } catch (Exception ex) {
   throw new EgrandException(ex);
  }
 } 

 


4.操作起来还是比较简单,方法可以不断改善,做到更符合实际,这是上传了ExcelUtils工具包,可以不断改进

,还有一些比较好导出excel的网上资料:http://jxls.sourceforge.net/samples/collectionsample.html

 

分享到:
评论

相关推荐

    使用jxl导出Excel表的好例子

    在Java编程环境中,导出数据到Excel表格是一个常见的需求,特别是在数据分析、报表生成或数据交换时。`jxl`库是Java中一个广泛使用的库,它允许开发者方便地读取和写入Microsoft Excel文件。本篇文章将深入探讨如何...

    jxl导出excel总结

    《jxl导出Excel的深度解析与应用》 在信息化高度发展的今天,Excel作为数据处理和分析的重要工具,被广泛应用于各个领域。Java作为一种强大的编程语言,如何与Excel进行交互,成为了许多开发者关注的焦点。jxl库...

    Android-Android使用jxl快速导出excel表

    本文将详细探讨如何在Android应用中使用jxl库快速导出Excel表格。 首先,我们需要理解jxl库的基本概念。jxl是一个Java API,它支持Microsoft Excel 97-2004的文件格式(.xls)。通过jxl,我们可以创建新的工作簿、...

    [转]java struts2+jxl生成并导出Excel

    这篇博客文章结合了这两个技术,展示了如何在Struts2应用中生成Excel文件并将其导出给用户下载。 在Java开发中,导出数据到Excel是常见的需求,特别是在处理大量结构化数据时,如报表或数据分析。JXL库提供了一个...

    java使用jxl进行Excel导入导出

    Java 使用 JXL 进行Excel导入导出是一个常见的任务,特别是在数据处理和分析场景中。JXL 是一个 Java 库,允许开发者方便地读取、写入和操作 Excel 文件(.xls 格式)。以下是对这个主题的详细阐述: 1. **JXL 概述...

    使用JXL生成Excel实例详解

    在Java编程环境中,生成Excel文件是一项常见的任务,特别是在数据处理、报表生成或数据分析等领域。JXL库是一个广泛使用的开源库,...通过深入学习和实践,你可以熟练掌握在Java中生成Excel文件的技巧,提高工作效率。

    java用jxl包导出excel表格

    接下来,我们将通过一个简单的示例——`ExcelDemo`,来展示如何使用JXL导出Excel表格。首先,我们需要创建一个`Workbook`对象,这相当于Excel文件中的工作簿。然后,我们可以在这个工作簿上创建多个`Sheet`,每个`...

    java通过jxl生成excel文档

    Java通过JXL库生成Excel文档是一项常见的任务,尤其在数据导出、报表生成等领域非常实用。JXL是一个Java API,允许我们读写Microsoft Excel文件,而无需依赖Microsoft Office。在这个过程中,我们可以创建新的工作簿...

    java使用JXL导入导出excel

    Java使用JXL库进行Excel导入导出是一种常见的技术实践,特别是在需要在Java应用程序或Web应用中处理Excel数据时。JXL是一个轻量级的库,它允许开发人员以纯Java方式读取、创建和修改Excel文件,而无需依赖于Windows...

    jxl 操作excel Demo

    通过上述的描述,我们可以看出"jxl操作excel Demo"是帮助开发者理解和实践如何在Java项目中利用jxl库来处理Excel文件的实例。"33.xls"可能是这个示例代码所操作的Excel文件,用于测试和展示jxl的功能。学习并理解这...

    JXL 导出EXCEL

    标题 "JXL 导出 EXCEL" 涉及到的...通过学习和实践 JXL,开发者能够轻松地在 Java 应用中生成和操作 Excel 文档,满足数据导出、报表生成等多种需求。结合提供的博客文章和示例代码,你可以更好地掌握这一工具的用法。

    Excel-Jxl-master_Androidexcel_androidexceljxl_android_

    标题“Excel-Jxl-master_Androidexcel_androidexceljxl_android_”指的是一个Android应用程序项目,它使用JXL库来处理Excel文件。JXL是一个Java库,允许开发者读取、写入和修改Excel工作表。这个项目的重点是实现...

    struts2 poi,jxl向excel表中插入记录源代码

    在本例中,POI用于在后台生成和操作Excel文件,将前端提交的数据写入Excel表格。 JXL则是另一个处理Excel文件的Java库,相比POI,它的功能相对较轻量级,但仍然能够实现读写Excel的基本需求。在早期的Java应用中,...

    jxl解析EXCEl2003

    在Java编程环境中,处理Excel文件是一项常见的任务,特别是在数据导入导出、数据分析或者报表生成等场景。本篇文章将深入探讨如何使用JXL库解析Excel 2003的文件,以此来帮助开发者们掌握这一技能。 JXL是一个开源...

    jxl读取excel的java代码小程序

    在Java编程环境中,处理Excel数据是一项常见的任务,特别是在数据导入导出、数据分析或者报表生成等场景。JXL库是一个广泛使用的开源库,专门用于读写Microsoft Excel文件。在这个"jxl读取excel的java代码小程序"中...

    SSH+JXL 下载 Excel 文档

    在"SSH+JXL 下载 Excel 文档"的场景中,JXL将用于生成Excel文件,这可能包括创建工作表,设置单元格格式,填充数据等。 4. **Excel文档的生成**: 使用JXL,开发者可以创建`WritableWorkbook`对象,然后添加`...

    poi,jxl解析excel

    - **自动化报告**:自动从数据库生成Excel报告,方便用户查看和分享。 5. **最佳实践**: - 使用流式处理减少内存占用,特别是处理大文件时。 - 考虑使用Apache POI的SXSSF子项目,它提供了基于流的处理方式,以...

    导入/导出excel jxl.jar

    "导入/导出Excel jxl.jar"是使用JExcelApi(通常简称为JXL)库的一个示例,这是一个开源Java库,允许开发者读取、写入和修改Excel文件。JXL.jar文件就是这个库的实现,它包含了所有必要的类和方法,使得开发者可以...

    Excel生成导出JXL和POI两种方式小demo

    提供的压缩包文件"excel导出"可能包含了使用JXL和POI生成Excel的示例代码,通过查看这些代码,你可以更好地理解如何在实际项目中应用这两个库。 总结来说,JXL和Apache POI都是Java中用于处理Excel的强大工具,各...

Global site tag (gtag.js) - Google Analytics