【问题标题】:C#: Insert into Excel as log fileC#:作为日志文件插入 Excel
【发布时间】:2016-02-01 13:53:33
【问题描述】:

是否有任何特定方法可以为我的函数创建日志文件。所有这些功能都作为测试用例。我正在使用下面的代码来添加数据。

string pathfile = @"data source location";
XLWorkbook workbook = new XLWorkbook(pathfile);
IXLWorksheet worksheet = workbook.Worksheet("Common");
worksheet.Cell("A2").Value = "1";
worksheet.Cell("B2").Value = "Test Case # 1";
worksheet.Cell("C2").Value = "1/29/2016 6:18:56 PM";
worksheet.Cell("D2").Value = "1/29/2016 6:19:56 PM";
worksheet.Cell("E2").Value = "1 minute";
workbook.Save();

现在我必须在每个函数中每次都指定这个。有没有其他更好更好的方法来创建excel日志文件?

Excel 日志文件示例

+------+-------------------+-------------------------+---------------------------+---------------+
|  ID  | Testcases No.     |        Start Time       |         End Time          |   Total Time  |  
+------+-------------------+-------------------------+---------------------------+---------------+
|  1   | Test Case # 1     |   1/29/2016 6:18:56 PM  |   1/29/2016 6:19:56 PM    |   1 minute    |  
+------+-------------------+-------------------------+---------------------------+---------------+
|  2   | Test Case # 2     |   1/29/2016 6:20:50 PM  |   1/29/2016 6:25:50 PM    |   5 minutes   |
+------+-------------------+-------------------------+---------------------------+---------------+  

程序用途:

  1. 单元测试类

  2. Nunit 运行我的应用程序

【问题讨论】:

  • 除非您需要 Excel 工作表的某些更丰富的功能(公式等),否则只需将其转储为 CSV。

标签: c# excel closedxml


【解决方案1】:

作为开发人员,您应该拥有或应该构建实用程序类的项目。您可以在没有项目/公司的情况下甚至是框架的情况下生活的例程。

即密码学、电子邮件、数据访问、日志记录

通过这种方式,您的公司或您个人可以将此项目放入您的项目中,并立即拥有丰富的功能供您使用。

我发现使用 Excel 来完成这个简单的日志记录任务有点繁重

那么为什么你不使用最好的之一,即 Net4Logger http://www.codeproject.com/Articles/140911/log-net-Tutorial

【讨论】:

  • 我的项目在控制台应用程序中,使用 Selenium 和 NUnit 运行我所有的测试用例。您发送的链接我认为没有帮助。
  • 如果您将 Log4Net 库引用添加到您的项目并输出到日志文件而不是繁重的 Excel 电子表格。你真的需要一个excel文件吗?
  • 是的,我确实需要 excel。这就是我发布这个问题的原因。
【解决方案2】:

一个很好的简单方法是简单地创建一个数据表,然后使用 closedxml 将其导出到 excel(您已经标记了它,所以我假设您已经拥有该库)

XLWorkbook workbook = new XLWorkbook();
DataTable dt = //insert your datasource here
workbook.Worksheets.Add(dt,"WorksheetName");

参考Here

【讨论】:

    【解决方案3】:

    Takarii 建议的替代方案。

    如果您将数据存储在 DataTableList<> 中,然后使用我的免费 C# 库,您可以使用 Microsoft OpenXML 库创建一个真正的 .xlsx 文件。

    Export to Excel

    您只需要添加一行代码,说明您的数据存储在哪里,以及您要调用的 Excel 文件:

    List<YourLogEntryClass> listOfLogRecords = new List<YourLogEntryClass>();
    
    . . . 
    
    CreateExcelFile.CreateExcelDocument(listOfLogRecords, "LogFile.xlsx");
    

    附:一个更明智的想法可能是将日志条目存储在 Excel 文件中,而是使用像 log4net 这样的东西来为您处理所有这些日志信息/错误字符串... p>

    【讨论】:

      【解决方案4】:

      是否有任何理由不采用该代码块并将其分解为一个单独的函数,该函数将文件位置、id 等作为参数?

      例如

      public void LogTest(string fileLocation, int id, float minutes)
      {
          // your code 
      }
      

      【讨论】:

      • 不,没有理由。您添加的 sn-p 也不是问题。问题是我不想在每个地方都指定单元格编号'(example Cel("A2"))',所以我要问的是如何在我的代码中不指定列号的情况下输入日志数据。并将其添加为代码块,不是所有行都会被填充吗?
      • @TylerH 注意,这不是答案。你不应该张贴应该是 cmets 的东西作为答案。
      • 假设 id 总是等于测试号,Cell("A" + (id + 1)) 将生成正确的行,假设字母部分没有改变。
      • @Takarii 我目前没有足够的声望来添加 cmets
      • @TylerH 然后你需要等到你这样做。不要试图成为痛苦,但发布不是答案的答案可能会阻止其他人查看问题并可能给出实际答案。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多