[C#] DatagridView -> TXT-Export

Cyperfriend

Der ohne Avatar
Registriert
14 Juli 2013
Beiträge
1.123
Ich habe mir für unsere Telefonanlagen ein Tool geschrieben mit dem ich sehr schnell das zentrale Telefonbuch aktualisieren kann. Bislang habe ich die Einträge in eine Multiline-Textbox gepackt, die ich dann speichern konnte. Das sah dann so aus:
Anhang anzeigen 45972
Die Lösung ist eigentlich echt super, hat aber den Nachteil, dass wenn ich Einträge ändern oder löschen möchte ich die ganze Datei durchgucken muss, da die Einträge nicht alphabetisch sortiert werden können.

Daher bin ich jetzt dabei mir eine neue Version zu programmieren und nutze dafür das DatagridView.
Einträge kann ich bereits hinzufügen, aber ich kann die Einträge leider nicht exportieren, bzw. eine entsprechende Datei öffnen. Kann mir bitte jemand mit einfachem Code (=Hauptsache es funktioniert) helfen? Anbei das was ich schon habe, sowie ein Screenshot
[src=csharp]using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;
using System.Text.RegularExpressions;


namespace Telefonbuch_Importer_2
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

// Dateipfad
string datei;


private void Form1_Load(object sender, EventArgs e)
{
//Spalten und Spaltenbreite festlegen
dataGridView1.Columns.Add("colNachname", "Nachname");
dataGridView1.Columns["colNachname"].Width = 150;
dataGridView1.Columns.Add("colVorname", "Vorname");
dataGridView1.Columns["colVorname"].Width = 150;
dataGridView1.Columns.Add("colFestnetz", "Festnetz");
dataGridView1.Columns["colFestnetz"].Width = 150;
dataGridView1.Columns.Add("colMobil", "Mobil");
dataGridView1.Columns["colMobil"].Width = 150;
dataGridView1.Columns.Add("colPrivat", "Privat");
dataGridView1.Columns["colPrivat"].Width = 150;
dataGridView1.Columns.Add("colEmail", "E-Mail");
dataGridView1.Columns["colEmail"].Width = 150;
}

private void cmdEinfuegen_Click(object sender, EventArgs e)
{
// Nur Zahlen zulassen, Lerrzeichen entfernen
Regex tmpFestnetz = new Regex("[^0-9]+");
string Festnetz = tmpFestnetz.Replace(txtFestnetz.Text.Trim(), string.Empty);

Regex tmpMobil = new Regex("[^0-9]+");
string Mobil = tmpMobil.Replace(txtMobil.Text.Trim(), string.Empty);

Regex tmpPrivat = new Regex("[^0-9]+");
string Privat = tmpPrivat.Replace(txtPrivat.Text.Trim(), string.Empty);

// Eintrag hinzufügen
dataGridView1.Rows.Add(txtNachname.Text, txtVorname.Text, Festnetz, Mobil, Privat, txtEmail.Text);

// Textboxen löschen
txtNachname.Clear();
txtVorname.Clear();
txtFestnetz.Clear();
txtMobil.Clear();
txtPrivat.Clear();
txtEmail.Clear();
}

private void txtNachname_TextChanged(object sender, EventArgs e)
{
// E-Mailadresse aus Vor- und Nachnamen zusammenbauen
txtEmail.Text = txtVorname.Text.ToLower() + "." + txtNachname.Text.ToLower() + "@";
}

private void cmdSpeichern_Click(object sender, EventArgs e)
{
try
{
SaveFileDialog sfd = new SaveFileDialog();
sfd.Filter = "Textdateien (*.txt)|*.txt";
if (sfd.ShowDialog() == DialogResult.OK)
{
string file = sfd.FileName;

}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}
}
[/src]
 
Du warst Dir gestern nicht sicher, ob Du eine fertige Lösung möchtest. Daher hier nur mal eine Möglichkeit ohne Code:

Dateiimport:
1) Alle Zeilen aus der Datei in einen StringArray laden
2) Alle Zeilen des Grids säubern
3) Für jede Zeile in dem Stringarray mit Daten die Werte aus dem String anhand des Seperator trennen und wiederum in einem Stringarray speichern.
4) Dieses als neue Reihe dem Grid hinzufügen

Dateiexport:
1) Du erstellst einen StringBuilder
2) Du iterierst (außen) über jede Zeile des Grids
3) Du iterierst (innen) über jede Zelle der Zeile
4) Du fügst jeden Zellenwert zum Stringbuilder hinzu und einen Seperator (außer beim letzten Wert)
5) Nach jeder Zeile dem Stringbuilder per AppendLine die neue Zeile signalisieren
6) Zum Schluß noch den ganzen Text des Builders in String gewandelt der Datei hinzufügen
 
Zurück
Oben