1. jxl 模板导出下载 jxl版本 2.6.12
备注: 由于jxl自身原因在windows平台下生成的文件正常打开,linux下 打开异常 “不能读取文件”
估计在linux下jxl写excel头信息不正常,以致office无法识别。
代码:
/**
* 下载某个学员的报名表
* @return
*/
public String download(){
List<SearchFilter> filters=new ArrayList<SearchFilter>();
SearchFilter f2=new SearchFilter("identityCard", SearchFilter.Operator.EQ,this.downIdentityCard);
filters.add(f2);
Specification<Training> spec = DynamicSpecifications.bySearchFilter(filters, Training.class,true);
this.trainings=this.trainingService.findAll(spec, new Sort(new Sort.Order(Sort.Direction.ASC, "subject.id"),new Sort.Order(Sort.Direction.ASC, "id")));
String templateName="training";
String fileSeparator = System.getProperty("file.separator");
String path = ServletActionContext.getServletContext().getRealPath("template");
String filePath =path+fileSeparator+ templateName+".xls";
OutputStream os=null;
Workbook wb=null;
WritableWorkbook wwb=null;
WritableSheet wws;
try{
response.reset();// 清空输出流
response.setContentType("application/msexcel; charset=utf-8"); // 定义输出类型
response.setHeader("Content-Disposition", "attachment; filename="+ Encodes.urlEncode(templateName)+".xls");
os = response.getOutputStream();// 取得输出流
wb=Workbook.getWorkbook(new FileInputStream(distFile));
wwb = Workbook.createWorkbook(os, wb);
wws = wwb.getSheet(0);
if(Util.isNotEmpty(this.trainings)){
Training training=this.trainings.get(0);
Label A00 = (Label)wws.getWritableCell(0,0);
A00.setString(new String(training.getSubject().getTrainingName().getBytes(),"UTF-8")+"报名登记表");
Label A21 = (Label)wws.getWritableCell(2,1);
A21.setString(training.getSignNumber());
Label A22 = (Label)wws.getWritableCell(2,2);
A22.setString(training.getStudentName());
Label A23 = (Label)wws.getWritableCell(2,3);
A23.setString(DateUtil.getStringFromDate(training.getBirthday(), "yyyy-MM-dd"));
Label A24 = (Label)wws.getWritableCell(2,4);
A24.setString(DictUtils.getDictLabel(training.getBackground() + "", "continuing.background", ""));
Label A25 = (Label)wws.getWritableCell(2,5);
A25.setString(training.getGraduateSchool());
Label A26 = (Label)wws.getWritableCell(2,6);
A26.setString(training.getTeachingSubject());
Label A27 = (Label)wws.getWritableCell(2,7);
A27.setString(training.getPost());
Label A28 = (Label)wws.getWritableCell(2,8);
A28.setString(training.getEmail());
Label A29 =(Label) wws.getWritableCell(2,9);
A29.setString(training.getMobile());
Label A62 = (Label)wws.getWritableCell(6,2);
A62.setString(DictUtils.getDictLabel(training.getSex()+"","XB",""));
Label A63 = (Label)wws.getWritableCell(6,3);
A63.setString(training.getIdentityCard());
Label A64 = (Label)wws.getWritableCell(6,4);
A64.setString(DictUtils.getDictLabel(training.getDegree()+"","training.degree",""));
Label A65 = (Label)wws.getWritableCell(6,5);
A65.setString(training.getYourMajor());
Label A96 = (Label)wws.getWritableCell(9,6);
A96.setString(training.getWorkUnit());
Label A97 = (Label)wws.getWritableCell(9,7);
A97.setString(training.getTitle());
Label A98 = (Label)wws.getWritableCell(9,8);
A98.setString(training.getQq());
Label A99 = (Label)wws.getWritableCell(9,9);
A99.setString(DictUtils.getDictLabel(training.getLodging()+"","training.lodging",""));
Label A82 = (Label)wws.getWritableCell(8,2);
A82.setString(training.getNationality());
}
wwb.write();
}catch (Exception ex){
ex.printStackTrace();
}
finally {
try {
wwb.close();
wb.close();
os.flush();
} catch (WriteException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
return null;
}
2. POI 模板导出下载 POI 版本 3.9 生成的excel 在windows ,linux下均正常打开
代码:
/**
* 下载某个学员的报名表
* @return
*/
public String download(){
List<SearchFilter> filters=new ArrayList<SearchFilter>();
SearchFilter f2=new SearchFilter("identityCard", SearchFilter.Operator.EQ,this.downIdentityCard);
filters.add(f2);
Specification<Training> spec = DynamicSpecifications.bySearchFilter(filters, Training.class,true);
this.trainings=this.trainingService.findAll(spec, new Sort(new Sort.Order(Sort.Direction.ASC, "subject.id"),new Sort.Order(Sort.Direction.ASC, "id")));
String templateName="training";
String fileSeparator = System.getProperty("file.separator");
String path = ServletActionContext.getServletContext().getRealPath("template");
String filePath =path+fileSeparator+ templateName+".xls";
String filePath2 =path+fileSeparator+ templateName+"2.xls";
OutputStream os=null;
Workbook wb=null;
Sheet wws=null;
try{
response.reset();// 清空输出流
response.setContentType("application/msexcel; charset=utf-8"); // 定义输出类型
response.setHeader("Content-Disposition", "attachment; filename="+ Encodes.urlEncode(templateName)+".xls");
InputStream in=new FileInputStream(file);
wb = new HSSFWorkbook(in);
wws = wb.getSheetAt(0);
if(Util.isNotEmpty(this.trainings)){
Training training=this.trainings.get(0);
Row row0= wws.getRow(0);
Cell cell00=row0.getCell(0);
cell00.setCellValue(training.getSubject().getTrainingName()+"报名登记表");
Row row1=wws.getRow(1);
Cell cell12=row1.getCell(2);
cell12.setCellValue(training.getSignNumber());
Row row2=wws.getRow(2);
Cell cell22=row2.getCell(2);
cell22.setCellValue(training.getStudentName());
Cell cell26=row2.getCell(6);
cell26.setCellValue(DictUtils.getDictLabel(training.getSex()+"","XB",""));
Cell cell28=row2.getCell(8);
cell28.setCellValue(training.getNationality());
Row row3=wws.getRow(3);
Cell cell32=row3.getCell(2);
cell32.setCellValue(DateUtil.getStringFromDate(training.getBirthday(), "yyyy-MM-dd"));
Cell cell36=row3.getCell(6);
cell36.setCellValue(training.getIdentityCard());
Row row4=wws.getRow(4);
Cell cell42=row4.getCell(2);
cell42.setCellValue(DictUtils.getDictLabel(training.getBackground() + "", "continuing.background", ""));
Cell cell46=row4.getCell(6);
cell46.setCellValue(DictUtils.getDictLabel(training.getDegree()+"","training.degree",""));
Row row5 =wws.getRow(5);
Cell cell52=row5.getCell(2);
cell52.setCellValue(training.getGraduateSchool());
Cell cell56=row5.getCell(6);
cell56.setCellValue(training.getYourMajor());
Row row6=wws.getRow(6);
Cell cell62=row6.getCell(2);
cell62.setCellValue(training.getTeachingSubject());
Cell cell69=row6.getCell(9);
cell69.setCellValue(training.getWorkUnit());
Row row7=wws.getRow(7);
Cell cell72=row7.getCell(2);
cell72.setCellValue(training.getPost());
Cell cell79=row7.getCell(9);
cell79.setCellValue(training.getTitle());
Row row8=wws.getRow(8);
Cell cell82=row8.getCell(2);
cell82.setCellValue(training.getEmail());
Cell cell89=row8.getCell(9);
cell89.setCellValue(training.getQq());
Row row9=wws.getRow(9);
Cell cell92=row9.getCell(2);
cell92.setCellValue(training.getMobile());
Cell cell99=row9.getCell(9);
cell99.setCellValue(DictUtils.getDictLabel(training.getLodging()+"","training.lodging",""));
}
os = response.getOutputStream();// 取得输出流
wb.write(os);
}catch (Exception ex){
ex.printStackTrace();
}
finally {
try {
os.flush();
os.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return null;
}
相关推荐
java通过Excel模板导出各种Excel , 支持所有的动态数据,列表,图片, 好用的请给好评! 解压导入到eclipse就可以运行看到效果,里面有简单的例子 , 有很复杂的模板,通过模板导出数据。
在Java编程中,导出复杂的Excel模板是一项常见的需求,尤其在数据分析、报表生成或数据交换等场景中。本文将深入探讨如何使用Java实现这一功能,包括选用的库、步骤、以及处理复杂模板的关键技巧。 首先,Java中最...
除了平时简单的数据导出需求外,我们也经常...源码案例提供了模板,单个数据写入与列表数据写入以及文件导出的代码,详细的说明请参照个人博客“Excel模板导出”,源码可以让读者更加详细的了解Excel导出的过程和原理。
会经常遇到导出业务数据的业务需求,导出Excel最常用的技术就是poi,对于简单的业务,我们可以动态的生成一个Excel文件,但对于复杂的业务,我们可以通过使用读取Excel模板的,然后往里面填充数据的方式,下载文件。...
在Java编程领域,Apache POI库是一个非常流行的API,它允许开发者读取、写入以及修改Microsoft Office格式的...通过学习这些资源,你可以更好地理解和实践上述知识,从而在项目中实现高效且灵活的Excel模板导出功能。
要实现自定义Excel模板导出,我们首先需要创建Excel模板。模板通常包含预设的样式、格式和数据占位符。这可以通过设置单元格的样式(如字体、颜色、边框等)、合并单元格、插入公式以及添加图片等方式来完成。在jxl...
在"JAVA Excel模板POI导出并下载"的场景中,我们首先需要创建一个Excel模板,这个模板可以包含预设的格式、样式或者数据占位符。例如,你可能有一个模板文件,其中的某些单元格有固定的样式,而其他单元格则留空等待...
【Kettle与Excel模板导出数据详解】 Kettle,又称为Pentaho Data Integration(PDI),是一款强大的ETL(Extract, Transform, Load)工具,它允许用户从各种数据源抽取、转换和加载数据。在实际业务场景中,有时...
这篇博客"java使用POI Excel模板导出数据"探讨了如何利用POI库在Java中创建Excel模板并填充数据。下面将详细介绍这个过程以及相关知识点。 首先,我们需要理解Apache POI的基本概念。POI是Apache软件基金会的一个...
根据excel模板动态导出数据库数据 package text; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.UUID; import javax.servlet....
在Jeecg中,Excel模板导出功能是其报表模块的一个重要组成部分。 在实现"Jeecg Excel通过模板导出"时,首先你需要创建一个Excel模板。这个模板可以包含各种预定义的样式,如字体、颜色、边框、对齐方式、公式等。...
【JAVA】easypoi根据Excel模板导出 循环遍历合并单元格处理
poi导入、导出,支持百万级数据模板导出、合并excel。项目为spring-boot-2上开发。resource里面有模板,在junit测试类中修改为本地存在路径即可导出文件,在junit测试类中修改for循环的i可以模拟百万级数据导出。注意...
1. **模板导出**:用户可以预先定义Excel模板,包括单元格格式、样式、公式等。在导出数据时,根据模板填充数据,确保导出的Excel与预期的样式一致。这通常涉及到HSSFCell和XSSFCell对象的使用,它们代表Excel中的...
本项目专注于解决这一问题,通过使用`jxls2`库,能够实现复杂Excel模板的导出,包括单元格的合并,满足多种报表导出需求。现在我们将详细探讨这个项目的核心技术和应用场景。 首先,`jxls2`是一个强大的Java库,它...
总结来说,"Excel导出数据(根据Excel模板定义)"是一项涉及模板设计、Java编程、数据处理和性能优化的技术。使用Apache POI库,我们可以实现根据预设模板动态生成和导出Excel文件,满足各种业务需求。
1. Excel模板导出: Easy POI允许开发者使用预定义的Excel模板来导出数据。在模板中,你可以设定好单元格的格式、样式和公式,然后用Easy POI将动态数据填入模板。通过`WorkbookFactory.create()`创建一个工作簿...
这个项目源自于http://blog.csdn.net/suhenhappy/article/details/7991236,这篇博客,在此谢谢博主suhenhappy。实现了java导出数据到指定的excel模板中。
本文将深入探讨如何使用Java来根据模板导出包含统计图的PDF文档。主要涉及的技术包括iText库、FreeMarker模板引擎以及可能的数据可视化工具。 首先,iText是一个强大的Java库,专门用于创建和操作PDF文档。它提供了...