2017-09-02 44 views
6

Tôi đang viết một chương trình lấy dữ liệu từ một trang web thông qua trình điều khiển web selenium. Tôi đang cố gắng để tạo ra trận đấu bóng đá cho các dự án của chúng tôi. Tôi cho đến nay, tôi đã hoàn thành ngày và giờ, tên nhóm và điểm số từ trang web. Ngoài ra vẫn còn cố gắng viết trên tập tin txt, nhưng nó được chút lộn xộn trong khi viết trên tập tin txtViết và đọc các tệp excel trong C#

Làm cách nào để hoàn thành viết trên tập tin excel và đọc? Tôi muốn viết như thế

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

Và đây là một phần của tôi về mã của tôi:

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 
} 

Viết phần:

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


} 

Trả lời

4

Có vài thư viện mát mẻ mà bạn có thể sử dụng để dễ dàng đọc và viết các tập tin excel. Bạn có thể tham khảo chúng trong dự án của bạn và dễ dàng tạo/sửa đổi bảng tính.

EPPlus Rất nhà phát triển thân thiện và dễ sử dụng.

NOPI

Document Format.OpenXml Nó cung cấp các lớp được đánh máy mạnh mẽ cho các đối tượng bảng tính và có vẻ khá dễ làm việc.

Open XML SDK 2.0 dành cho Microsoft Office Cung cấp mạnh mẽ gõ lớp/dễ dàng để làm việc với.

ClosedXML - Cách đơn giản để OpenXML ClosedXML làm cho nó dễ dàng hơn cho các nhà phát triển để tạo ra (.xlsx, .xlsm, vv) tập tin.

SpreadsheetGear * Paid - thư viện để nhập khẩu/xuất khẩu bảng tính Excel trong ASP.NET

+1

Ngay khi có thể, tôi sẽ xem xét và thử nó. Cảm ơn bạn rất nhiều –

+1

Tôi rất khuyên bạn nên EPPlus – Kevin

+0

@Kevin có tôi quá! EPPlus rất đẹp và rất dễ sử dụng. – krzysztofla

3

Thay vì tạo tệp XLS, hãy tạo tệp văn bản CSV có thể mở bằng Excel. Các trường được phân cách bằng dấu phẩy và mỗi dòng đại diện cho một bản ghi.

field11,field12 
field21,field22 

Nếu trường có chứa dấu phẩy bên trong, cần phải được bao bọc trong dấu ngoặc kép.

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

Nếu trường có dấu ngoặc kép thì cần phải thoát. Nhưng bạn có thể sử dụng CsvHelper để thực hiện công việc. Lấy nó từ NuGet

PM> Install-Package CsvHelper

Một ví dụ về cách sử dụng nó.

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

Tài liệu đầy đủ có thể được tìm thấy here.

+0

Không khó nếu tôi có nhiều dữ liệu. Ví dụ: nếu tôi có 1.000 tên nhóm, ngày @derloopkat –

+0

Trong trường hợp đó, bạn có thể lặp qua các hàng đầu tiên và cho mỗi hàng lặp qua các cột. Nếu không theo một số mẫu mã bạn có thể vượt qua đối tượng phức tạp đại diện cho một tập hợp các hàng và viết chúng trực tiếp vào tập tin với 'writer.WriteRecords (hàng);' Tuy nhiên tôi đã không cố gắng đó. Xem https://stackoverflow.com/a/44728910/2516718 – derloopkat

+0

Được rồi, tôi sẽ thử điều đó. Cảm ơn bạn rất nhiều @derlookat –

Các vấn đề liên quan