如何自动执行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月。

考虑以下几点,以便在来自不同来源和不同格式的数据的情况下实现自动化成功:

  1. 从不同来源提取数据

    一个。 Windows PowerShell(作业调度) – 快速有用,因为你使用MS技术(OR)

    湾 任何其他编程语言,你在(OR)

    C。 通过SQL代理T-SQL查询(定义明确且结构良好)并将所有数据放在一个文件夹中

  2. 使用您的首选方法将数据转换为所需的数据集 –

    一个。 Powershell(作业调度) – 最佳(OR)

    湾 任何你想要的其他语言(OR)

    C。 VBA Excel / Access / CSV /文本格式&我build议将数据集转换为.txt格式

  3. 将这些数据集加载到SQL服务器/ DBMS或任何进一步操作的地方,使用查询操作数据集并将作业设置为:

    一个。 通过SQL代理通过T-SQL查询(定义明确且结构良好)(作业调度) – 输出为文本/ excel格式(AND)

    湾 使用VBA在Excel中导入和创build数据透视表/分析/报告并通过作业调度程序进行调度

  4. 价值添加 – 广泛使用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中。

你的要求是复杂的,因此我不能给出一个特别完整的答案,但希望我的观点是有用的。