2

我有一个类似于下面的日志文件,我想将此日志文件转换为 excel 表。

样本日志文件

DateTime: 2012-12-10 20:27:10
Command: ALTER INDEX [Mypageviews] ON [WhosOff].[dbo].[PageViews] REORGANIZE WITH (LOB_COMPACTION = ON)
Comment: ObjectType: Table, IndexType: NonClustered, ImageText: N/A, NewLOB: No, FileStream: N/A, AllowPageLocks: Yes, PageCount: 7639, Fragmentation: 8.1817
Outcome: Succeeded
Duration: 00:00:41
DateTime: 2012-12-10 20:27:51

DateTime: 2012-12-10 20:27:52
Command: ALTER INDEX [MyVisitKeys] ON [WhosOff].[dbo].[Visit] REBUILD WITH (SORT_IN_TEMPDB = OFF, ONLINE = ON)
Comment: ObjectType: Table, IndexType: NonClustered, ImageText: N/A, NewLOB: No, FileStream: N/A, AllowPageLocks: Yes, PageCount: 7229, Fragmentation: 94.4667
Outcome: Succeeded
Duration: 00:00:06
DateTime: 2012-12-10 20:27:58

我希望使用 C# 将上述日志文本文件转换为 excel 表中的以下格式。输出

StartTime             IndexName     Dbnanme Tbname
2012-12-10 20:27:10  MyPageviews    WhosOff PageViews
2012-12-10 20:27:52  MyVisitKeys    WhoOff  Visit

谁能告诉我如何编写程序来实现上述输出?

4

3 回答 3

0

在我看来,最简单的方法是将其转换为CSV 格式。所有版本的excel都能很好的识别。但要小心日期、时间、小数和所有其他特定于语言环境的格式化值。Excel 将尝试将所有这些值转换为其内部表示,这只有在计算机区域设置中表示的值才会成功

于 2012-12-20T12:39:25.460 回答
0

我认为您需要将输入解析为有意义的内容,这将是您问题中最复杂的部分。

但是,一旦您拥有某种结构的数据,最基本的方法就是创建一个分隔文本文件(例如 csv),然后可以将其导入 Excel。

为此,只需在每个列值之间放置一个逗号(或您选择的任何分隔符),并将每一行放在一个新行上。

还有更优雅和复杂的解决方案,例如以 Open Office 格式输出 xml 文档,或者访问 Excel 对象模型。正如我所说的,每一个都更优雅,但学习曲线会更陡峭。

于 2012-12-20T12:40:25.430 回答
0

您可以尝试实现SmartXls。在那里,您可以轻松地从例如 DataTable 构建 Excel 文件。

否则,请尝试使用 html 表创建文件,将其另存为 .xls 并在 Excel 中打开。或者为什么不只是 .csv 格式?

我没有解析和转换的具体代码示例,但它似乎对大多数人来说足够简单易懂?以下是一些可能有帮助的参考资料:

于 2012-12-20T12:38:20.703 回答