本参考以下链接,特此感谢

zKettle实战100篇 第19篇 转换核心对象Microsoft Excel输出组件 — 八一菜刀

kettle遍历目录_yzp950311的博客-CSDN博客

【Kettle】—— Kettle遍历执行SQL文件 - 灰信网(软件开发博客聚合)

【Kettle】—— Kettle遍历执行SQL文件_maixiaochai的博客-CSDN博客_kettle导入sql文件

Kettle之批量读取excel文件内容实现批量下载功能 - 灰信网(软件开发博客聚合)

总体逻辑大概如下

总流程

JS-初始化EXCEL名称和路径列表:

var prevRows=previous_result.getRows();//如果结果集数据为null或者没有数据,直接返回false
if(prevRows == null &&(prevRows.size()==0)){false;
}else{for(var j = 0; j < prevRows.size(); j++){//将所有结果集数据存进sourceUrl变量parent_job.setVariable("prevRows"+j,prevRows.get(j));} //将元素个数设置给size变量parent_job.setVariable("size",prevRows.size());//设置一个循环起始变量parent_job.setVariable("i",0);true;
}

这里为什么 set变量的时候 ,是用for循环把每一条文件的内容加下标存进去

因为: 我之前试过用二维数组存 “文件路径+文件短名”的 方式,大概是下面这个样子

[[a1,a2],[b1,b2],[c1,c2]]

这个玩意存到 kettle的 变量里面 就是一个字符串 “[[a1,a2],[b1,b2],[c1,c2]] ”

我取出来之后,没法还原成 二维数组,只能把 [] 全部替换成空串,然后用逗号,split成数组,但是兄弟们,这样分割出来的数组就变成了1维数组了,等于你得到的是 [a1,a2,b1,b2,c1,c2]

但是你想要的是 [a1,a2],[b1,b2],[c1,c2] ,我试了 eval 去还原二维数组。没用,这个kettle里面的js不认识

所以 综上所述,我把每一条记录都用一个变量存起来了 区分它们的就是下标,比较笨,兄弟们有更好的方法请给我留言谢谢!

JS-读取单个excel的路径和文件名

var size=new Number(parent_job.getVariable("size"));
var i=new Number(parent_job.getVariable("i"));
//var prevRows=parent_job.getVariable("prevRows").replace("[","").replace("]","").split(",");if(i>=size){false;
}else{//因为上一步添加进去的时候,是作为一个像数组元素一样的对象添加进去,变量都会转成字符串,所以直接移除掉就可以了var subject="自定义日志输出";//实例化日志channel对象var log= new org.pentaho.di.core.logging.LogChannel(subject);//日志输出log.logMinimal("XXXXXXXXXXXXXXXXXXXXXXXX:");//log.logMinimal(i);var curRows=parent_job.getVariable("prevRows"+i).replace("[","").replace("]","").split(",");parent_job.setVariable("furi",curRows[0]);var fname = curRows[1];var idxname = fname.indexOf(".");var fsname = fname.substring(0,idxname)parent_job.setVariable("fname",fname);parent_job.setVariable("fsname",fsname);true;
}

PS :这里设置的变量  furi和fsname 是为了在下一个转换里面当成参数传递给 “excel输入” 以及“excel输出”

furi  : fileuri  文件的绝对路径

fsname : file short name  不带后缀的文件名

更新遍历的下标

//变量i自加
var i = new Number(parent_job.getVariable("i"))+1;//在把i设置回去
parent_job.setVariable("i",i);true;

(转换)读取excel文件列表

获取文件名:获取这个目录下的所有你要的excel

字段选择-复制到结果: 把读取到的结果组装成结果集,供下一步读取遍历


(转换)清洗并输出新excel

kettle批量读取清洗excel文件,并分别生成新excel相关推荐

  1. php原生读取excel文件夹,原生php实现excel文件读写的方法分析php技巧

    这篇文章主要介绍了原生php实现excel文件读写的方法,结合实例形式分析了采用原生php针对Excel进行读写操作的相关实现方法与操作注意事项,需要的朋友可以参考下 本文实例分析了原生php实现ex ...

  2. 【MATLAB】批量读取图像raw文件(干货代码分享)

    [MATLAB]批量读取图像raw文件(干货代码分享) 1.先学个简单的,读取单张raw文件 matlab代码如下: %图像的基本信息: %512行,640列,像素深度16bit. col=640; ...

  3. C++ 怎么批量读取多个文件

    C++ 怎么批量读取多个文件 char szName[100] = {'\0'};sprintf(szName, "/training/wall/clouser_wall%d.pcd&quo ...

  4. java写入excel文件内存不足,java 导出 excel 最佳实践,java 大文件 excel 避免OOM(内存溢出) excel 工具框架...

    产品需求 产品经理需要导出一个页面的所有的信息到 EXCEL 文件. 需求分析 对于 excel 导出,是一个很常见的需求. 最常见的解决方案就是使用 poi 直接同步导出一个 excel 文件. 客 ...

  5. 多個excel文件合并到一個excel文件

    各位大俠下午好:         小弟在把多個由水晶報表導出的excel文件合并到一個excel文件的時候發現有一下問題:         圖片和表格重疊在一起,也就是說報表的圖形遮住了表格文字.如果 ...

  6. 如何用Apache POI操作Excel文件-----如何在已有的Excel文件中插入一行新的数据?

    在POI的第一节入门中,我们提供了两个简单的例子,一个是如何用Apache POI新建一个工作薄,另外一个例子是,如果用Apache POI新建一个工作表.那么在这个章节里面,我将会给大家演示一下,如 ...

  7. 用pandas生成excel文件示例,并调整excel的格式或样式

    用pandas生成excel 当我们有特殊的需求时,比如要修改excel的行宽列宽,还有字体样式等等 需求示例 代码实现 # -*- coding: utf-8 -*- import pandas a ...

  8. python 批量读取xlsx并合并_python合并多个excel表格数据-python如何读取多个excel合并到一个excel中...

    python如何读取多个excel合并到一个excel中 思路 利用python xlrd包读取excle文件,然后将文件内容存入一个列表中,再利用xlsxwriter将内容写入到一个新的excel文 ...

  9. 【框架思路】python如何读取excel文件内容?如何获取excel文件的路径及sheet名称?

    转载请注明作者和出处:美二 https://blog.csdn.net/qq_32654897/article/details/88579713 一.背景说明 在自动化项目中,有时候测试用例会放在ex ...

最新文章

  1. 聊天机器人革命即将到来 开发者入局需谨慎
  2. 为什么租号玩显示服务器忙,租号玩上号器怎么用,租号玩上号器使用教程
  3. 【NLP】NLP实战篇之bert源码阅读(run_classifier)
  4. 【大会】看案例,选方案
  5. ssh 连接linux 乱码问题,SSH 连接 Ubuntu 时的中文乱码问题
  6. 面试题46. 把数字翻译成字符串
  7. nginx服务+LEMP搭建
  8. LDA-线性判别分析
  9. C++程序设计课上机作业
  10. 信签纸有虚线怎么写_写观后感的信签纸格式
  11. 打印系统开发(63)——C# 实现虚拟打印机 HP Color LaserJet 4500 (2) True Type Font字体显示
  12. 凡是函数中未指定存储类型_函数中未指定存储类别的局部变量,其隐含的存储类别为()...
  13. 使用word2vec分析新闻标题并预测文章流行度
  14. 2022年全球市场液相色谱仪器总体规模、主要生产商、主要地区、产品和应用细分研究报告
  15. 第四十六章 使用 ^SystemPerformance 监视性能 - 生成 ^SystemPerformance 性能报告
  16. VHDL行为描述方法实现与门
  17. spring源码阅读--aop实现原理分析
  18. 营改增后计算机 维护费税率,维保费税率可以是10%吗_税率
  19. 关于通用雷达信号的时频分析与图像绘制(Matlab)
  20. 安卓系统再曝高危漏洞!大部分手机都可能被黑客控制

热门文章

  1. mysql 保留两位小数 查询_mysql查询结果保留两位小数
  2. ADO操作Excel,提示错误“不可识别的数据库格式”
  3. 超详细 Unity 大作业之 坦克大战
  4. 逻辑回归(Logistic Regression, LR)简介
  5. iOS 视频播放 MPMoviePlayerViewController
  6. sqlserver对cpu主频要求_SQLSERVER到底能识别多少个逻辑CPU?
  7. 查看数据库最大连接数
  8. Vue3: Non-function value encountered for default slot. Prefer function slots for better performance.
  9. Qt 的TCP网络通信
  10. 优秀编程知识文章-链接汇总(持续更新ing)