最近做了些导出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。
分享到:
相关推荐
在Java编程环境中,导出数据到Excel表格是一个常见的需求,特别是在数据分析、报表生成或数据交换时。`jxl`库是Java中一个广泛使用的库,它允许开发者方便地读取和写入Microsoft Excel文件。本篇文章将深入探讨如何...
《jxl导出Excel的深度解析与应用》 在信息化高度发展的今天,Excel作为数据处理和分析的重要工具,被广泛应用于各个领域。Java作为一种强大的编程语言,如何与Excel进行交互,成为了许多开发者关注的焦点。jxl库...
本文将详细探讨如何在Android应用中使用jxl库快速导出Excel表格。 首先,我们需要理解jxl库的基本概念。jxl是一个Java API,它支持Microsoft Excel 97-2004的文件格式(.xls)。通过jxl,我们可以创建新的工作簿、...
这篇博客文章结合了这两个技术,展示了如何在Struts2应用中生成Excel文件并将其导出给用户下载。 在Java开发中,导出数据到Excel是常见的需求,特别是在处理大量结构化数据时,如报表或数据分析。JXL库提供了一个...
Java 使用 JXL 进行Excel导入导出是一个常见的任务,特别是在数据处理和分析场景中。JXL 是一个 Java 库,允许开发者方便地读取、写入和操作 Excel 文件(.xls 格式)。以下是对这个主题的详细阐述: 1. **JXL 概述...
在Java编程环境中,生成Excel文件是一项常见的任务,特别是在数据处理、报表生成或数据分析等领域。JXL库是一个广泛使用的开源库,...通过深入学习和实践,你可以熟练掌握在Java中生成Excel文件的技巧,提高工作效率。
接下来,我们将通过一个简单的示例——`ExcelDemo`,来展示如何使用JXL导出Excel表格。首先,我们需要创建一个`Workbook`对象,这相当于Excel文件中的工作簿。然后,我们可以在这个工作簿上创建多个`Sheet`,每个`...
Java通过JXL库生成Excel文档是一项常见的任务,尤其在数据导出、报表生成等领域非常实用。JXL是一个Java API,允许我们读写Microsoft Excel文件,而无需依赖Microsoft Office。在这个过程中,我们可以创建新的工作簿...
Java使用JXL库进行Excel导入导出是一种常见的技术实践,特别是在需要在Java应用程序或Web应用中处理Excel数据时。JXL是一个轻量级的库,它允许开发人员以纯Java方式读取、创建和修改Excel文件,而无需依赖于Windows...
通过上述的描述,我们可以看出"jxl操作excel Demo"是帮助开发者理解和实践如何在Java项目中利用jxl库来处理Excel文件的实例。"33.xls"可能是这个示例代码所操作的Excel文件,用于测试和展示jxl的功能。学习并理解这...
标题 "JXL 导出 EXCEL" 涉及到的...通过学习和实践 JXL,开发者能够轻松地在 Java 应用中生成和操作 Excel 文档,满足数据导出、报表生成等多种需求。结合提供的博客文章和示例代码,你可以更好地掌握这一工具的用法。
标题“Excel-Jxl-master_Androidexcel_androidexceljxl_android_”指的是一个Android应用程序项目,它使用JXL库来处理Excel文件。JXL是一个Java库,允许开发者读取、写入和修改Excel工作表。这个项目的重点是实现...
在本例中,POI用于在后台生成和操作Excel文件,将前端提交的数据写入Excel表格。 JXL则是另一个处理Excel文件的Java库,相比POI,它的功能相对较轻量级,但仍然能够实现读写Excel的基本需求。在早期的Java应用中,...
在Java编程环境中,处理Excel文件是一项常见的任务,特别是在数据导入导出、数据分析或者报表生成等场景。本篇文章将深入探讨如何使用JXL库解析Excel 2003的文件,以此来帮助开发者们掌握这一技能。 JXL是一个开源...
在Java编程环境中,处理Excel数据是一项常见的任务,特别是在数据导入导出、数据分析或者报表生成等场景。JXL库是一个广泛使用的开源库,专门用于读写Microsoft Excel文件。在这个"jxl读取excel的java代码小程序"中...
在"SSH+JXL 下载 Excel 文档"的场景中,JXL将用于生成Excel文件,这可能包括创建工作表,设置单元格格式,填充数据等。 4. **Excel文档的生成**: 使用JXL,开发者可以创建`WritableWorkbook`对象,然后添加`...
- **自动化报告**:自动从数据库生成Excel报告,方便用户查看和分享。 5. **最佳实践**: - 使用流式处理减少内存占用,特别是处理大文件时。 - 考虑使用Apache POI的SXSSF子项目,它提供了基于流的处理方式,以...
"导入/导出Excel jxl.jar"是使用JExcelApi(通常简称为JXL)库的一个示例,这是一个开源Java库,允许开发者读取、写入和修改Excel文件。JXL.jar文件就是这个库的实现,它包含了所有必要的类和方法,使得开发者可以...
提供的压缩包文件"excel导出"可能包含了使用JXL和POI生成Excel的示例代码,通过查看这些代码,你可以更好地理解如何在实际项目中应用这两个库。 总结来说,JXL和Apache POI都是Java中用于处理Excel的强大工具,各...