【问题标题】:Writing and Reading excel files in C#在 C# 中编写和读取 excel 文件
【发布时间】:2018-02-11 06:26:01
【问题描述】:

我正在编写一个程序,该程序通过 selenium web 驱动程序从网站获取数据。我正在尝试为我们的项目创建足球装置。 到目前为止,我已经完成了从网站获取日期和时间、团队名称和分数。还在尝试写入 txt 文件,但写入 txt 文件时会有点乱

如何完成在excel文件上的写入和读取? 我想这样写

Date-Time     First-Team   Second-Team    Score    Statistics
28/07 19:00   AM           AVB            2-1      Shot 13123 Pass 65465 ...
28/07 20:00   BM           BVB            2-2      Shot 13123 Pass 65465 ...
28/07 20:00   CM           CVB            2-3      Shot 13123 Pass 65465 ...

这是我的代码的一部分:

StreamWriter file = new StreamWriter(Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "\\Test" + "\\" + pathName + "\\" + subFile + "\\" + pathName + ".txt", false);

for (int k = 2; k > 1; k--)
{ 
     //doing some stuff
}

写作部分:

for (int x = 0; x <dT.Count; x++)
{
     file.Write(dateTime[x] + " " + firstTeam[x] + " "
                       + secondTeam[x] + " " + firstHalf[x] + " " + secondHalf[x] + " ")
     for (int i = 0; i < total_FS.Count(); i++)
     {
           int index = total_FS[i].Length;
           if (total_FS[i][index-1].ToString() != " " && total_FS[i] != "-")
           {
                 file.Write(total_FS[i]);
           }
           else
           {
                 SpaceC++;
                 if (total_FS[i][index - 1].ToString() == " ")
                 file.Write(total_FS[i]);
           }
           if (SpaceC == 9)
           {
                 file.Write("\n");
                 SpaceC = 0;
                 break;
           }
      }


}

【问题讨论】:

    标签: c# .net excel selenium-webdriver ms-office


    【解决方案1】:

    您可以使用一些很酷的库来轻松读写 excel 文件。您可以在项目中引用它们并轻松创建/修改电子表格。

    EPPlus 对开发人员非常友好且易于使用。

    NOPI

    DocumentFormat.OpenXml 它为电子表格对象提供了强类型类,并且看起来相当容易使用。

    Open XML SDK 2.0 for Microsoft Office 提供强类型类/易于使用。

    ClosedXML - OpenXML 的简单方法 ClosedXML 使开发人员可以更轻松地创建(.xlsx、.xlsm 等)文件。

    电子表格齿轮 *付费 - 在 ASP.NET 中导入/导出 Excel 工作簿的库

    【讨论】:

    • 尽快,我会看看并尝试一下。非常感谢
    • 我强烈推荐 EPPlus
    • @Kevin 我也是! EPPlus 很不错,而且非常易于使用。
    • 非常感谢。我尝试过这个。它非常易于使用。
    • MS COM 对象已被弃用多年。您应该使用Open XML SDK 来处理现代办公文件格式。
    【解决方案2】:

    不要创建 XLS 文件,而是创建一个可以用 Excel 打开的 CSV 文本文件。字段以逗号分隔,每行代表一条记录。

    field11,field12
    field21,field22
    

    如果字段包含内逗号,则需要用双引号括起来。

    "field11(row1,column1)", field12
    field21, field22
    

    如果字段包含双引号,则需要对其进行转义。但是您可以使用CsvHelper 来完成这项工作。从 Nuget 中获取它

    PM> 安装包 CsvHelper

    如何使用它的示例。

    using(var textWriter = new StreamWriter(@"C:\mypath\myfile.csv")
    {
        var writer = new CsvWriter(textWriter);
        writer.Configuration.Delimiter = ",";
    
        foreach (var item in list)
        {
            csv.WriteField("field11");
            csv.WriteField("field12");
            csv.NextRecord();
        }
    }
    

    完整的文档可以在here找到。

    【讨论】:

    • 如果我有很多数据,这不是很难吗。例如,如果我有 1,000 个团队名称,日期时间@derloopkat
    • 在这种情况下,您可以先遍历行,然后为每一行遍历列。否则,根据一些代码示例,您可以传递表示行集合的复杂对象并将它们直接写入文件writer.WriteRecords(rows); 但是我还没有尝试过。见stackoverflow.com/a/44728910/2516718
    • 好的,我会试试的。非常感谢@derlookat
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-16
    • 1970-01-01
    • 1970-01-01
    • 2019-03-27
    相关资源
    最近更新 更多