2017-09-02 82 views
6

Piszę program, który pobiera dane z witryny internetowej za pośrednictwem sterownika sieci web selenu. Próbuję stworzyć mecz piłki nożnej dla naszych projektów. Do tej pory osiągnąłem datę i godzinę, nazwy zespołów i wyniki ze strony internetowej. Nadal próbuję pisać na pliku txt, ale robi się trochę nieczytelnie podczas pisania na pliku txtPisanie i czytanie plików Excel w C#

Jak mogę pisać na pliku Excel i czytać? Chcę napisać jak ten

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 ... 

A to moja część mojego kodu:

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 
} 

Pisanie część:

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; 
      } 
     } 


} 

Odpowiedz

4

Istnieje kilka fajnych biblioteki, które można wykorzystać do łatwe czytanie i pisanie plików Excel. Możesz odwoływać się do nich w swoim projekcie i łatwo tworzyć/modyfikować arkusze kalkulacyjne.

EPPlus Bardzo przyjazny dla programistów i łatwy w użyciu.

nopi

Dokument Format.OpenXml Zapewnia silnie typowane klasy dla obiektów arkusza kalkulacyjnego i wydaje się dość łatwe w obsłudze.

Open XML SDK 2.0 dla Microsoft Office Zapewnia silnie wpisany klasy/łatwy w użyciu.

ClosedXML - Prosty sposób na OPENXML ClosedXML ułatwia programistom tworzenie (.xlsx, .xlsm itp) plików.

SpreadsheetGear * Płatny - biblioteka na import/eksport arkuszy Excel w ASP.NET

+1

Tak szybko, jak to możliwe, przyjrzę się temu i spróbuję. Bardzo dziękuję –

+1

Bardzo polecam EPPlus – Kevin

+0

@Kevin tak ja też! EPPlus jest przyjemny i bardzo łatwy w użyciu. – krzysztofla

3

Zamiast tworzyć plik XLS, należy utworzyć plik tekstowy CSV, który można otworzyć za pomocą programu Excel. Pola są rozdzielane przecinkami, a każda linia reprezentuje rekord.

field11,field12 
field21,field22 

Jeśli pole zawiera wewnętrzne przecinki, to musi być zapakowane w podwójny cudzysłów.

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

Jeśli pole zawiera podwójne cudzysłowy, muszą one zostać zmienione. Ale możesz wykonać zadanie za pomocą CsvHelper. Skorzystaj z Nuget

PM> Instaluj-Pakiet CsvHelper

Przykładem tego, jak go używać.

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(); 
    } 
} 

Pełna dokumentacja znajduje się pod adresem here.

+0

Nie może być trudno, jeśli mam dużo danych. Na przykład, jeśli mam 1 000 nazw zespołów, data-godzina @derloopkat –

+0

W takim przypadku możesz najpierw przeglądać wiersze, a dla każdego wiersza przechodzić przez kolumny. W przeciwnym razie, zgodnie z niektórymi próbkami kodu, można przekazać złożony obiekt reprezentujący zbiór wierszy i zapisać je bezpośrednio do pliku za pomocą 'writer.WriteRecords (rows);' Jednak nie próbowałem tego. Zobacz https://stackoverflow.com/a/44728910/2516718 – derloopkat

+0

Dobra, spróbuję tego. Bardzo dziękuję @derlookat –