2017-09-02 45 views
6

我在写一个程序,它通过selenium web驱动程序从一个网站获取数据。我正在努力为我们的项目创建足球夹具。 我到目前为止,我完成了日期和时间,团队名称和分数从网站。也仍然试图写在txt文件上,但它在写入txt文件时变得有点混乱在C#中编写和读取excel文件#

如何完成在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; 
      } 
     } 


} 

回答

4

有,你可以用它来几酷库轻松读写excel文件。您可以在项目中引用它们,并轻松创建/修改电子表格。

EPPlus 非常开发友好,易于使用。

NOPI

文献Format.OpenXml 它为电子表格对象提供强类型类,并且似乎很容易处理。

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

ClosedXML - 最简单的方式处理OpenXML ClosedXML可以更容易地开发出格式(.xlsx,.XLSM等)的文件。

的SpreadsheetGear *付费 - 库在ASP.NET

  • 导入/导出Excel工作簿
+1

尽快,我会看看它,并尝试它。非常感谢 –

+1

我强烈推荐EPPlus – Kevin

+0

@Kevin也是我! EPPlus非常好用,非常易于使用。 – krzysztofla

3

不用创建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

+0

如果我有很多数据,难道不是很难吗?例如,如果我有1,000个团队名称,则date-time @derloopkat –

+0

在这种情况下,您可以先遍历行,并且每行迭代遍历列。否则,根据一些代码示例,您可以传递代表行集合的复杂对象,并用'writer.WriteRecords(rows)将其直接写入文件中;'但是我没有尝试过。请参阅https://stackoverflow.com/a/44728910/2516718 – derloopkat

+0

好的,我会尝试。非常感谢@derlookat –