我们有一个小项目,涉及自动解析一些服务器/邮件日志(以及其他内容)。现在,计划A只是将一些Python和Django合并到一起来正确地执行此操作 grins ,但我得到了否决权,解决方案必须是纯Excel,因为它相信会更便携
1。导入制表符分隔文件
我们的输入文件是“CSV”文件,但它实际上是一个以制表符分隔的文件。
类似的东西:
"Server Name" "Server Alias" "1Feb09" "2Feb09" "3Fe09" "4Feb09"
"BobsServer" "Foobar foobar" "34234" "23432" "52234" "23432"
"JanesServer" "Foobar foobar" "30984" "34233" "34523" "92342"
"SamsServer" "Foobar foobar" "12321" "23423" "23423" "23423"
等
我正在使用以下VBA导入此内容:
Workbooks.OpenText Filename:="C:\logs.csv", Origin:=437, StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(1, 1), TrailingMinusNumbers:=True
有趣的是,当文件扩展名为“.csv”时,它似乎被破坏了,Excel将所有内容都推到了一列。然而,当文件扩展名是其他东西(例如“.txt”)时,它导入正常。每次都是完全相同的文件这是Excel处理文件扩展名的一些怪癖而我错过了什么?
我希望我不需要在VBA中做一些hackery来重命名文件,我想我可以,但我真的很好奇为什么会这样?
2。粘贴到现有工作表
第二个问题,上面打开了CSV文件作为一个完整的新工作表,有没有办法代替上面的解析,但是将它插入我们工作簿中的临时新工作表?
第3。读取条目,添加到主表
下一步是获取我们的日志文件,并将其集成到我们的主工作表中,其中包含每个服务器的历史记录。
从我相当有限的Excel知识中,我假设我们会做类似的事情:
上述逻辑看起来是否合理?或者是否有更有效的方法在Excel中执行此操作? (我怀疑可能存在,我不太了解Excel对象模型)。
4。在任意日期范围内汇总总数
最后一步是根据任意日期范围实际计算我们想要的服务器的总数。这只是一个宏函数,需要三个参数(服务器,开始日期,结束日期)。
有一个我们特别感兴趣的服务器列表,我猜我们可能会将它存储在一个单独的工作表中。然后我们将对该列表中的每个函数执行函数调用,并在两个日期之间对该行执行水平求和。我可以在这里使用某种捷径吗?
答案 0 :(得分:0)
您是否考虑过使用Log Parser?
日志解析器功能强大,功能多样 提供通用查询的工具 访问基于文本的数据,如日志 文件,XML文件和CSV文件,如 以及关键数据来源 Windows®等操作系统 事件日志,注册表,文件 系统和ActiveDirectory®。