2017-09-02 25 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 –