C# - Tworzenie pliku .CSV

Forum poświęcone językowi C#.

Moderator: xxSlayeRxx

C# - Tworzenie pliku .CSV

Sponsor

Sponsor
 

C# - Tworzenie pliku .CSV

Postprzez Morcinek92 » N paź 29, 2017 1:43 pm

Witam,

Mam następujący problem, pobieram dane z pliku .xml i chciałbym zapisywać je do pliku .csv.

Funkcja, która posiada dane z pliku .xml: GetWojewodztwa

Kod: Zaznacz cały
        private List<Woj> GetWojewodztwa(Models.Teryt teryt)
        {
            var list = new List<Woj>();

            list.AddRange(teryt.TercList.TerList.Where(q => string.IsNullOrWhiteSpace(q.POW)).Select(q => new Woj
            {
               nazwa = q.NAZWA.ToLower(),
               code = q.WOJ
            }));

            return list;
        }


oraz GetMiejscowosci:

Kod: Zaznacz cały
 private List<Miej> GetMiejscowosci(Models.Teryt teryt, List<Gmina> gminy)
        {
           var list = new List<Miej>();

            list.AddRange(teryt.SimcList.SimcsList.Where(q => q.SYM == q.SYMPOD).Select(q => new Miej
            {
                nazwa = q.NAZWA,
                rodzajID = q.RM,
                code = q.SYM,                   
            }));

            return list;
        }     


Chciałbym aby te dwie funkcje znalazły się w pliku .CSV. NIe mam problemu z jedną.. ale nie mam pojęcia jak to zrobić z dwoma. Czy ktoś mógłby mi doradzić jak zmienić funkcje "WriteFile"

Kod: Zaznacz cały
double LP;
       
        public void Export(Lokalizacje loks)
        {
            Export_To_File (loks, "OutFile_GUS.csv");
        }

        private void Export_To_File(Lokalizacje loks, string outputFileName)
        {
            const string header = "Lp.;Województwo;Miejscowość;Gmina;Powiat;Ulica";

            WriteFile(outputFileName, loks.Wojewodztwa, header, q => $"{LP};{q.nazwa}");             
        }

        private void WriteFile<T> (string outputFileName, IReadOnlyList<T> list, string header, Func<T, string> lineProvider)
        {
            using (var fs = new FileStream( outputFileName, FileMode.Create, FileAccess.Write))
            {
                using (var sw = new StreamWriter(fs, Encoding.UTF8))
                {
                    sw.WriteLine(header);
                    var count = list.Count;
                   
                    for (var i = 0; i < count; i++)
                    {
                        LP = i;                     

                        var loc = list[i];
                        var line = lineProvider(loc);
                        if (i == count - 1)
                        {
                            sw.Write(line);
                        }
                        else
                        {
                            sw.WriteLine(line);
                        }
                    }
                }
            }
        }       
   
Morcinek92
New member
 
Posty: 1
Dołączył(a): N paź 29, 2017 1:37 pm

C# - Tworzenie pliku .CSV

Sponsors

Sponsor
 

Powrót do C#

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 6 gości

cron