excel - 使用 Talend Job 在 excel 中添加数据透视表的最佳方法是什么?
问题描述
我正在开发一个Talend Automation Job,
我需要在 Excel的“数据”表中获取我的数据。然后使用 Excel 中的数据透视表在同一 Excel 工作簿
的单独工作表“ Segment_Summary ”中添加摘要。
(使用 Excel 2016)
然后在tsendMail 中将其作为附件发送给客户端。
你能告诉我一个比我下面解释的更好的方法吗?
所以,这是我尝试做的事情:
我创建了一个带有“数据”表的示例工作簿。
选择“数据”表的单元格并为它们创建一个命名范围。
然后在新工作表“ Segment_Summary ”中的该命名范围上添加了一个数据透视表。
还将我的数据透视设置设置为打开文件时自动刷新。
在 Talend 中,我使用tFileOutputExcel将我的数据提取到一个新的 excel 文件中。使用tFileCopy将我的示例工作簿中的Segment_Summary
表
复制到这个新的 excel 文件中。使用tsendMail将 excel 作为附件发送
输出发生了什么:
执行我的工作,
检查创建的新 Excel。
很好,pivot 会自动刷新到新数据。
那么这里出了什么问题:
当我从邮件下载文件然后打开它时,枢轴不会刷新。这是因为默认情况下 MS Excel 在保护模式下打开每个文件并禁用编辑。因此,当客户端打开此文件时,他们将看到过时的数据而不是刷新的数据。
(我不能简单地写在以编辑模式打开它的邮件中,因为这必须发送给很多人......而且我的电子邮件模板是逐字逐句由销售决定的。)
解决方案
tFileCopy 不复制文件吗?您如何使用它从 Excel 文件中复制单个工作表?
鉴于 Talend 不“理解” Excel - 只有数据和文件 - 我能想到的唯一可行的方法是让您的目标 Excel 文件已经包含数据透视表,然后使用 Talend 更新该目标文件中的工作表包含原始数据。
我可能会创建一个包含示例数据和数据透视表的模板 Excel 文件,然后在每次运行时创建该文件的副本并更新副本。
鉴于原始数据的大小可能会随着运行而变化,您可能还会遇到数据透视表正在使用的命名范围的问题 - 假设命名范围是固定的。可能需要动态命名范围,如果您需要知道,此链接说明了如何实现它:动态命名范围
推荐阅读
- json - ASPNET Core - Json 响应在相关模型处停止
- r - 尝试添加列但获取条件长度 >1 错误
- tensorflow - tf.losses.absolute_difference() 是如何工作的?
- javascript - 选择一个时如何禁用多个选择标签?
- java - 为什么我不能通过引用这个关键字在构造中使用字段变量
- typescript - 如何在 Typescript 中模拟隐式参数?
- firebase - 如何通过在firestore的父集合中过滤子集合中的数据来获取父集合?
- c++ - 如何获取小部件的当前填充?
- javascript - javascript中^操作的定义
- java - 如果它有强大的测试用例,这个问题的解决方案是什么?