• Hallo liebe Userinnen und User,

    nach bereits längeren Planungen und Vorbereitungen sind wir nun von vBulletin auf Xenforo umgestiegen. Die Umstellung musste leider aufgrund der Serverprobleme der letzten Tage notgedrungen vorverlegt werden. Das neue Forum ist soweit voll funktionsfähig, allerdings sind noch nicht alle der gewohnten Funktionen vorhanden. Nach Möglichkeit werden wir sie in den nächsten Wochen nachrüsten. Dafür sollte es nun einige der Probleme lösen, die wir in den letzten Tagen, Wochen und Monaten hatten. Auch der Server ist nun potenter als bei unserem alten Hoster, wodurch wir nun langfristig den Tank mit Bytes vollgetankt haben.

    Anfangs mag die neue Boardsoftware etwas ungewohnt sein, aber man findet sich recht schnell ein. Wir wissen, dass ihr alle Gewohnheitstiere seid, aber gebt dem neuen Board eine Chance.
    Sollte etwas der neuen oder auch gewohnten Funktionen unklar sein, könnt ihr den "Wo issn da der Button zu"-Thread im Feedback nutzen. Bugs meldet ihr bitte im Bugtracker, es wird sicher welche geben die uns noch nicht aufgefallen sind. Ich werde das dann versuchen, halbwegs im Startbeitrag übersichtlich zu halten, was an Arbeit noch aussteht.

    Neu ist, dass die Boardsoftware deutlich besser für Mobiltelefone und diverse Endgeräte geeignet ist und nun auch im mobilen Style alle Funktionen verfügbar sind. Am Desktop findet ihr oben rechts sowohl den Umschalter zwischen hellem und dunklem Style. Am Handy ist der Hell-/Dunkelschalter am Ende der Seite. Damit sollte zukünftig jeder sein Board so konfigurieren können, wie es ihm am liebsten ist.


    Die restlichen Funktionen sollten eigentlich soweit wie gewohnt funktionieren. Einfach mal ein wenig damit spielen oder bei Unklarheiten im Thread nachfragen. Viel Spaß im ngb 2.0.

[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]
 

KaPiTN

♪♪♫ wild at heart ♪♫♫♪

Registriert
14 Juli 2013
Beiträge
29.138
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
 
Oben