jimureport使用过程中“踩坑”记录

jimureport使用过程中“踩坑”记录

一、积木存在无法识别特殊字符

如果存在特殊字符的情况可以使用下面的代码替换掉所有的特殊字符

  private String removeJimu(String name) {
        return name.replaceAll("[^a-zA-Z0-9]", "");
    }

二、积木中的pdf生成模块现在并不支持

一般这个时候会直接使用excel2pdf工具,代码如下:

String coaPdfUrl = 
    fileService.upload(PdfUtil.*excel2pdf*(url, url.getPath().substring(url.getPath().lastIndexOf('/') + 1) + ".pdf"));

注意excel2pdf中存在是否支持分页的情况,一般都需要支持

// 参数true把内容放在一张PDF页面上
pdfSaveOptions.setOnePagePerSheet(false);

三、积木中报错功能会导致查不到值

积木数据采集接口如果报错则不会返回值,所以一般是不需要值的。

四、循环体删除后也需要删除不需要的空白字段

这个会导致excel会持续输出

五、积木的excel接口

    public String coaNewExport(String token, ReportProductConfig reportProductConfig) {

        // 查询模板id
        String reportConfigId = reportProductConfig.getReportConfigId();
        if (CommonUtil.isEmpty(reportConfigId)) {
            throw new ApiException("模板id不能为空");
        }
        ReportConfig reportConfig = reportConfigService.getById(reportConfigId);
        String jimuReportId = reportConfig.getJimuReportId();

        // 上传值
        JSONObject var7 = new JSONObject();
        var7.put("productBatchNum", reportProductConfig.getProductBatchNum());
        var7.put("customerProductCode", reportProductConfig.getCustomerProductCode());
        var7.put("cylinderNum", reportProductConfig.getCylinderNum());
        var7.put("productId", reportProductConfig.getProductId());
        
        // 调用积木报表
        Map var11 = this.exportExcel.exportExcel(jimuReportId, var7, null, (Boolean) null);

        // 生成excel表
        SXSSFWorkbook var14 = (SXSSFWorkbook) var11.get("workbook");
        ByteArrayOutputStream var15 = new ByteArrayOutputStream();

        File toFile = new File(reportProductConfig.getProductName() + ".xlsx");
        try {
            var14.write(var15);
            String var17 = Base64Utils.encodeToString(var15.toByteArray());
            //转换成byte
            byte[] buffer = Base64Utils.decodeFromString(var17);
            toFile = bytesToFile(buffer, toFile);
            FileInputStream fileInputStream = new FileInputStream(toFile);
            String uploadFile = fileService.upload(new MockMultipartFile("copycoaMerge", "coa.xlsx", ContentType.APPLICATION_OCTET_STREAM.toString(), fileInputStream));
            toFile.delete();
            return uploadFile;
        } catch (Exception e) {
            //未生成文件事务回滚
        }
        return null;
    }
  • 10
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: jimureport 是一个开源的报告生成工具,它使用 Python 语言编写,可以帮助用户快速生成专业的报告。您可以在 GitHub 上查看 jimureport 的源代码,并获取有关如何使用 jimureport 的详细信息。下面是 jimureport 的 GitHub 主页链接: https://github.com/JimuReport/jimureport 您可以在该页面查看 jimureport 的所有源代码,并通过下载或克隆代码库的方式在本地运行 jimureport。此外,还可以在该页面查看 jimureport 的文档,了解 jimureport使用方法和功能。 ### 回答2: jimureport是一个开源的项目,提供了一个用于生成报告的工具。它能够帮助开发人员将数据整理成易读的报告形式,并且可根据需求自定义报告的样式和内容。 jimureport的源码包含了项目的所有代码和资源文件。通过查看源码,我们可以深入了解该项目的实现细节和工作原理。 在jimureport的源码,主要包含了以下内容: 1. 报表生成逻辑:源码会包含报表生成的核心逻辑和算法。这部分代码是生成报告的关键,它定义了报表的结构、样式以及数据的处理方式。 2. 数据处理和转换:源码会包含对数据进行处理和转换的相关代码。这些代码负责将原始数据转换为报表所需的格式,比如将数据库查询结果转换为报表数据,或者对数据进行计算和过滤等操作。 3. 模板设计和样式定义:源码可能包含报表模板的设计和样式定义代码。这部分代码定义了报告的布局、字体、颜色等样式,以及报表各个元素的位置和大小。 4. 报表导出和呈现:源码会包含报表导出和呈现的相关代码。这些代码负责将生成的报告导出为PDF、HTML等格式,或者在网页上呈现报表内容。 通过阅读和理解jimureport的源码,我们可以更好地掌握报表生成的原理和实现方式,也可以根据需求进行二次开发和定制。同时,通过与开源社区的交流和讨论,我们还可以学习到其他开发者的经验和分享,进一步提升报表生成的能力和效果。 ### 回答3: jimureport是一款用于生成报告的开源软件,其源码是指该软件的程序代码。源码是编写软件的原始代码,通过阅读源码可以了解软件的实现原理和具体功能。对于jimureport的源码,我们可以通过阅读和分析来了解它是如何实现报告生成的。 首先,我们可以从源码找到该软件的主要模块和类的定义。这些模块和类可以表示软件的主要功能和组成部分。通过查看这些模块和类的代码,我们可以了解到软件是如何进行报告的数据处理和展示的。源码可能包含有关报告模板的定义、数据源的连接和操作、报告元素的创建和排版等相关代码。 其次,我们还可以通过查看源码的注释来了解代码的实现思路和逻辑。注释可以对代码的目的和执行过程进行解释,有助于理解代码的实现细节。通过阅读注释,我们可以了解软件的设计思想和开发者的意图。 此外,源码还可能包含一些外部依赖库和第三方工具的使用。这些依赖库和工具可以提供一些额外的功能和支持,帮助软件实现更复杂的报告生成需求。对于这些依赖库的源码,我们也可以进一步了解它们的工作原理和使用方法。 最后,我们可以通过对源码的学习和理解,进行自定义和扩展。源码可以作为我们学习相关编程知识的参考和实践材料。如果我们对该软件有一些特定的需求或改进的想法,可以对源码进行修改和调整,实现自己所需的报告生成功能。 总之,通过阅读和理解jimureport的源码,我们可以深入了解该软件的实现原理和功能。源码是软件开发重要的资源和学习材料,对于提升我们的编程能力和开发经验都具有很大的帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值