`

JAVA excel模板导出下载

阅读更多

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

    java通过Excel模板导出各种Excel , 支持所有的动态数据,列表,图片, 好用的请给好评! 解压导入到eclipse就可以运行看到效果,里面有简单的例子 , 有很复杂的模板,通过模板导出数据。

    java基于模板导出Excel表格

    除了平时简单的数据导出需求外,我们也经常...源码案例提供了模板,单个数据写入与列表数据写入以及文件导出的代码,详细的说明请参照个人博客“Excel模板导出”,源码可以让读者更加详细的了解Excel导出的过程和原理。

    java复杂模板excel导出例子

    在Java编程中,导出复杂的Excel模板是一项常见的需求,尤其在数据分析、报表生成或数据交换等场景中。本文将深入探讨如何使用Java实现这一功能,包括选用的库、步骤、以及处理复杂模板的关键技巧。 首先,Java中最...

    javaWeb中使用Excel模板导出业务数据

    会经常遇到导出业务数据的业务需求,导出Excel最常用的技术就是poi,对于简单的业务,我们可以动态的生成一个Excel文件,但对于复杂的业务,我们可以通过使用读取Excel模板的,然后往里面填充数据的方式,下载文件。...

    java基于poi通过excel模板导出

    在Java编程领域,Apache POI库是一个非常流行的API,它允许开发者读取、写入以及修改Microsoft Office格式的...通过学习这些资源,你可以更好地理解和实践上述知识,从而在项目中实现高效且灵活的Excel模板导出功能。

    java实现自定义excel模板导出excel并可保存客户端和在线打开

    要实现自定义Excel模板导出,我们首先需要创建Excel模板。模板通常包含预设的样式、格式和数据占位符。这可以通过设置单元格的样式(如字体、颜色、边框等)、合并单元格、插入公式以及添加图片等方式来完成。在jxl...

    JAVA Excel模板POI导出并下载

    在"JAVA Excel模板POI导出并下载"的场景中,我们首先需要创建一个Excel模板,这个模板可以包含预设的格式、样式或者数据占位符。例如,你可能有一个模板文件,其中的某些单元格有固定的样式,而其他单元格则留空等待...

    kettle 使用excel模板导出数据

    【Kettle与Excel模板导出数据详解】 Kettle,又称为Pentaho Data Integration(PDI),是一款强大的ETL(Extract, Transform, Load)工具,它允许用户从各种数据源抽取、转换和加载数据。在实际业务场景中,有时...

    java使用 POI Excel模板导出数据

    这篇博客"java使用POI Excel模板导出数据"探讨了如何利用POI库在Java中创建Excel模板并填充数据。下面将详细介绍这个过程以及相关知识点。 首先,我们需要理解Apache POI的基本概念。POI是Apache软件基金会的一个...

    java编写根据模板导出excel

    根据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模板导出功能是其报表模块的一个重要组成部分。 在实现"Jeecg Excel通过模板导出"时,首先你需要创建一个Excel模板。这个模板可以包含各种预定义的样式,如字体、颜色、边框、对齐方式、公式等。...

    JAVAeasypoi根据Excel模板导出 循环遍历合并单元格处理

    【JAVA】easypoi根据Excel模板导出 循环遍历合并单元格处理

    poi_模板导出excel,支持百万级数据模板导出

    poi导入、导出,支持百万级数据模板导出、合并excel。项目为spring-boot-2上开发。resource里面有模板,在junit测试类中修改为本地存在路径即可导出文件,在junit测试类中修改for循环的i可以模拟百万级数据导出。注意...

    java excel大数据量导出demo,可支持模板导出

    1. **模板导出**:用户可以预先定义Excel模板,包括单元格格式、样式、公式等。在导出数据时,根据模板填充数据,确保导出的Excel与预期的样式一致。这通常涉及到HSSFCell和XSSFCell对象的使用,它们代表Excel中的...

    Excel导出数据(根据Excel模板定义)

    总结来说,"Excel导出数据(根据Excel模板定义)"是一项涉及模板设计、Java编程、数据处理和性能优化的技术。使用Apache POI库,我们可以实现根据预设模板动态生成和导出Excel文件,满足各种业务需求。

    Excel报表导出,复杂Excel模板导出(带单元格合并),jxls2

    本项目专注于解决这一问题,通过使用`jxls2`库,能够实现复杂Excel模板的导出,包括单元格的合并,满足多种报表导出需求。现在我们将详细探讨这个项目的核心技术和应用场景。 首先,`jxls2`是一个强大的Java库,它...

    easypoi的使用demo,包含Excel模板导出,html导出Excel,Excel导出pdf等

    1. Excel模板导出: Easy POI允许开发者使用预定义的Excel模板来导出数据。在模板中,你可以设定好单元格的格式、样式和公式,然后用Easy POI将动态数据填入模板。通过`WorkbookFactory.create()`创建一个工作簿...

    java导出数据到指定的excel模板中。

    这个项目源自于http://blog.csdn.net/suhenhappy/article/details/7991236,这篇博客,在此谢谢博主suhenhappy。实现了java导出数据到指定的excel模板中。

    java根据模板导出PDF详细教程(包含统计图)

    本文将深入探讨如何使用Java来根据模板导出包含统计图的PDF文档。主要涉及的技术包括iText库、FreeMarker模板引擎以及可能的数据可视化工具。 首先,iText是一个强大的Java库,专门用于创建和操作PDF文档。它提供了...

Global site tag (gtag.js) - Google Analytics