Tabellarischer Editor MS Excel hat viele guten Features in der Bearbeitung der CSV Dateien. Sie können die Daten sortieren, filtern, unnötige Spalten löschen und Nummerierung addieren. Aber wie lösen Sie alle diesen Aufgaben, wenn Sie keinen tabellarischen Editor in der Hand haben. Bearbeitung der csv Datei wird eine sehr schwere Aufgabe. Sie sollen Spalten-Umbruche identifizieren und irgendwie sortieren. Aber was passiert, wenn Sie eine große Datenmenge haben?
Es gibt eine Lösung dieser Aufgabe, wenn wir FastReport.Net oder FastReport Desktop auf dem Rechner haben. Wir können csv-Datei als eine Datenquelle betrachten, einen Bericht machen, Daten bearbeiten und in csv Datei exportieren.
Als ein Beispiel dafür verwenden wir eine nicht so große csv файл mit den Namen und Adressen:
Hier gibt es eine Zip-Spalte (PLZ). Weiter bestimmen wir die Handlung, die zu machen sind:
Wir erstellen einen neuen Bericht und fügen eine neue CSV Datei als eine Datenquelle hinzu.
Auf der Bericht-Seite platzieren wir Felder FIO, Address und eine Copie vom Feld Address. Das Feld Address wird auf folgender Weise bearbeitet: [Substring([Addresse.Address],0,6)]. So heben wir die Stadt Moscow aus der Adresse. Wenn die Namen der Stadt komplizierter wäre, brauchen wir mehr komplizierte Bearbeitung. Dafür verwendet man Script. Fürs auf den Band hinzugefügte Objekt erstellen wir einen Event BeforePrint(). In den Script fügen wir die Bibliothek hinzu: using System.Text.RegularExpressions;
Und so sieht der Code des Event-Bearbeiter aus:
1 2 3 4 5 6 7 8 9 |
private void Text5_BeforePrint(object sender, EventArgs e) { Regex rgx = new Regex("([^,]|\n)+", RegexOptions.IgnoreCase); Match match = rgx.Match(Report.GetColumnValue("Адреса.Address").ToString()); if (match.Success) { Text5.Text = match.Value.ToString(); } } |
In diesem Codestück verwenden wir einen regulären Satz, um die Daten vor Komma auszuwählen.
But, back to the second Address field, which we added. Since we have separated the name of the city into a separate column, the rest of the address must remain here. Let's use the script for the Text3 object.:
Und jetzt zur Copie des Feldes „Address”. Weil die Stadt in einem anderen Feld angezeigt wird, wird hier ein anderer Teil mit folgendem Script präsentiert
1 2 3 4 5 6 7 8 9 |
private void Text3_BeforePrint(object sender, EventArgs e) { Regex rgx = new Regex(@"(?<=,\s).*", RegexOptions.IgnoreCase); Match match = rgx.Match(Report.GetColumnValue("Addresses.Address").ToString()); if (match.Success) { Text3.Text = match.Value.ToString(); } } |
Weiter sortieren wir die Daten nach Nachnamen. Dazu machen wir einen Doppelklick auf dem Band „Daten“ und wählen den Tab «Sort». Drei Felder sind zum Sortieren verfügbar. Wir setzen ein erstes– Name ein:
Weiter filtern wir die Daten nach Nachnamen „Gusev“. Nach noch einen Doppelklick auf dem Band „Daten“ wählen wir „Filter“ und geben folgenden Satz „[Addresses.Name]!="Robert King"" ein.
Wir starten die Vorschau des Berichts:
Also, wir haben ZIP gelöscht, nach Nachnamen die Liste sortiert, die Stadt in separater Spalte von der gebliebenen Adresse gezeigt und das Feld mit dem Wert „Robert King“ gelöscht.
Weiter exportieren wir den Bericht ins csv Format. In der Vorschau klicken die Taste:.
Und wählen «CSV формат…». Im Dialog-Fenster klicken wir „Ок“ und suchen wohin die Datei zu speichern. Am Ende bekommen wir folgende CSV Datei:
Zum Schluss möchte ich sagen, dass die Handlungen, die wir mit der Datei gemacht haben, sind ganz einfach und dauern wenig Zeit.