【问题标题】:Optimized parse text file, to then upload to Excel [closed]优化解析文本文件,然后上传到 Excel [关闭]
【发布时间】:2018-05-18 16:09:19
【问题描述】:

我的项目是把大量的日志,输出到文本文件里面,解析一些数据做成Excel格式。

中间有很多不需要的垃圾数据

其中一部分是这样的:

2018-05-17 07:16:57.105>>>>>>
{"status":"success", "statusCode":"0", "statusDesc":"Message Processed Sucessfully", "messageNumber":"451", "payload":{"messageCode":"SORTRESPONSE","Id":"5L","Id":"28032","messageTimestamp":"2018-05-16 23:16:55"}}

我首先需要获取“{}”之前的时间戳 因为它不同于 messageTimestamp

生成excel工作簿时 这是它在 Excel 中的样子:

------A-----------------------------------B--------------C

1. Overall time stamp ---------- status------- statusCode 

2. 2018-05-17 07:16:57.105   - success --- -0

等等……

有效负载在其“{}”中有自己的日志部分

所以它在 excel 中的部分将如下所示:

  F

1. payload
2. {"messageCode":"SORTRESPONSE","Id":"5L","Id":"28032","messageTimestamp":"2018-05-16 23:16:55"}

它的内容可以放在一个不成问题的部分中。

我的一个朋友做过类似的事情,但即使是生成一个相对较小的 Excel 文档也可能需要几分钟时间

我的问题:

解析所需数据然后将其存储在数组或多维数组中的最佳方法是什么

然后将其推送到 Excel 文档中。

【问题讨论】:

    标签: c# excel text-files text-parsing string-parsing


    【解决方案1】:

    我会尝试将输入文本拆分为换行符,然后使用 Newtonsoft.Json 解析 JSON 部分。

    我强烈建议不要尝试自己解析 JSON。这里的瓶颈将是磁盘 IO 而不是内存中的处理,因此可以轻松编写正确的代码并使用 3rd 方库。

    一旦您拥有表示输入的结构化数据,您就可以将每个条目写入一个仅包含您需要的字段的输出文件。

    对于 Excel 文件,CSV 可以,还是需要 XLSX 文件?对于 CSV,您可以直接写入文件,对于 XLSX,我会推荐 EPPlus 库。

    https://www.newtonsoft.com/json

    https://archive.codeplex.com/?p=epplus

    【讨论】:

    • 谢谢,我试试。一开始我在想正则表达式。循环 txt 中的每一行以获取关键字,然后在 ' :" ' 和 ' " ' 之前获取上下文,但我担心这会花费太长时间,因为我有很多关键字要查找,因为错误文本可能会发生变化。至于 CSV 问题。我不相信他们有偏好。他们希望能够以可管理的方式读取 DB 或 Excel 格式的日志。
    • 这行得通,谢谢,它变成了我想要的 =)
    猜你喜欢
    • 2012-10-05
    • 2014-09-10
    • 1970-01-01
    • 1970-01-01
    • 2010-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-27
    相关资源
    最近更新 更多