在C#中编写和读取excel文件

时间:2017-09-02 10:43:27

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

我正在编写一个程序,通过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;
           }
      }


}

2 个答案:

答案 0 :(得分:5)

您可以使用很少的酷库来轻松读取和写入Excel文件。您可以在项目中引用它们,并轻松创建/修改电子表格。

<强> EPPlus 非常开发人员友好且易于使用。

<强> NOPI

<强> DocumentFormat.OpenXml 它为电子表格对象提供强类型类,并且似乎相当容易使用。

打开适用于Microsoft Office的XML SDK 2.0 提供强类型类/易于使用。

ClosedXML - OpenXML的简便方法 ClosedXML使开发人员更容易创建(.xlsx,.xlsm等)文件。

<强>的SpreadsheetGear *付费 - 用于在ASP.NET中导入/导出Excel工作簿的库

答案 1 :(得分:4)

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

field11,field12
field21,field22

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

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

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

  

PM&GT;安装包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