如何自动执行excel报告定期的数据透视表将不会削减它的数据来自许多地方?
我有一个问题,我一直在运行,我无法在网上find答案。 请不要将此标记为意见文章,因为它100%不是。
我有一个相当复杂的Excel报告,我需要创build,然后自动化。 我的数据以CSV,制表符分隔,json和.xls的forms放在一个ftp站点上。 我也有我需要引入的SQL Server数据。 一旦我获得了数据,我必须把它组织起来,并对其进行度量(这意味着它不像拖放到一个excel文件中那么简单)。
目前我一直在使用VBA将其大部分导入到MS Access中,然后执行复杂的查询来获取大部分我想要的数据,然后我将它移植到excel中,通过链接excel中的查询并通过调用文件并指定一个macros来更新并从计划任务的Access / Excel中导入。
这不仅是马虎,它也感觉不专业,并像它可以在任何时候炸毁我。
有没有更好/更清洁/更直接/更清晰/更安全的方法来做到这一点?
我知道ac#console应用程序的想法,但我无法find任何好的教程来获得足够的成就。
将所有数据本地化到一台服务器中是不可能的,除非我编写脚本来从FTP站点执行
我知道很多程序员都是反Access,反VBA的。 有些人有好点,其他人只是巨魔。 请发表你的经验,自动化excel报告为2016年的一个很好的解决scheme 。 所有的文件都是从2007年开始的,而现代的答案是没有地方可以find的,或者人们试图声称购买他们的图书馆/插件是唯一的解决scheme(这些人让我生病,试图推动蹩脚的代码在你的喉咙)。
我知道关于互操作,我知道openxml和IIS,但我没有在网上find很好的例子,如何做我的目标,我甚至不知道如果信息是最新的。
所以总而言之,你如何自动化一个需要比数据透视表更多的技巧的Excel报表,并且有数据来自许多来源? 还有没有人有一个很好的2016年的例子,还没有过时或XP上运行(XP是一个伟大的操作系统,但时间到了)
最好是C#,VBA,SQL将是尽可能less的外部库和插件使用的工具
谢谢
注意: 要求我们推荐或查找书籍,工具,软件库,教程或其他非本地资源的问题与Stack Overflow无关,因为它们倾向于吸引自以为是的答案和垃圾邮件。 – 我问的是专业人员如何在Excel上实现自动化,以及如何以程序的方式进行。 我不是要求书籍,图书馆,第三方工具或其他资源。 我正在寻求解决编码困境的方法,因为我一直在用100多行代码来旋转,并相信必须有一个更直接的方法。
对于长时间和最近的成功部署,使用以下方法是2015年12月。
考虑以下几点,以便在来自不同来源和不同格式的数据的情况下实现自动化成功:
-
从不同来源提取数据
一个。 Windows PowerShell(作业调度) – 快速有用,因为你使用MS技术(OR)
湾 任何其他编程语言,你在(OR)
C。 通过SQL代理T-SQL查询(定义明确且结构良好)并将所有数据放在一个文件夹中
-
使用您的首选方法将数据转换为所需的数据集 –
一个。 Powershell(作业调度) – 最佳(OR)
湾 任何你想要的其他语言(OR)
C。 VBA Excel / Access / CSV /文本格式&我build议将数据集转换为.txt格式
-
将这些数据集加载到SQL服务器/ DBMS或任何进一步操作的地方,使用查询操作数据集并将作业设置为:
一个。 通过SQL代理通过T-SQL查询(定义明确且结构良好)(作业调度) – 输出为文本/ excel格式(AND)
湾 使用VBA在Excel中导入和创build数据透视表/分析/报告并通过作业调度程序进行调度
-
价值添加 – 广泛使用Powershell来安排作业,embeddedVBA代码,与SQL服务器进行数据交易并发送电子邮件(警报/报告作为附件/有关成功或失败的通知等)。 请记得在networking驱动器/服务器上提供足够的访问权限,这是成功的关键。
干杯
我理解你对许多资料来源的强调,但是我对这个问题的第一个方法总是如何标准化数据的原始forms。 我相信标准化是金科玉律。 这就带来了如何去做的问题。
在最近的一个例子中,我必须制作一个工具,根据SQL服务器和在线Excel电子表格上的数据生成报告。 解决scheme是转换我最舒适的格式的所有数据,这是我的Excel电子表格。 因此,对于SQL Server中的数据,我生成了一个脚本,该脚本通过联机可用电子表格(例如SharePoint)提供,并将数据保存在同一个在线位置。 在这个阶段,数据是相当原始的forms(即没有处理,最小的过滤等)。
因此,在我的数据(Excel电子表格和已转换的SQL数据)可用的共同在线位置,我从该位置生成了一个添加。 这样做的好处是可以将加载项分发给多个用户(这是我的先决条件),并且每个人都从同一位置input数据。
总结:
- 尽可能标准化原始数据表格。
- 常见的数据源。
- 以您最熟悉的语言处理数据。
就个人而言,我会用C#或Visual Basic创build一个程序(这是个人的偏好;都使用相同的.NETfunction),它以任何您需要的格式导入数据。
首先,您可以通过在.NET项目中引用Excel Interop来从XLS文件中提取数据。 如果使用TextFieldParser类 (请参阅这里的Visual Basic教程),提取CSV数据并不是特别困难。 这个类将允许您parsing制表符分隔的数据。 JSON格式的数据更加棘手,但是这个免费的开放源代码.NET库提供了该部门所需的一切。
至于SQL Server,这显然很容易与.NET应用程序一起使用(请参阅此处或仅Google它)。
诀窍是始终将这些数据提取到相同的内部格式 ,以便您可以在检索它之后以相同的方式将其导入到Excel中。
你的要求是复杂的,因此我不能给出一个特别完整的答案,但希望我的观点是有用的。