Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
CSV-Editor / Datenkonvertierer
zurück: Fehler beim Import von Excel-Tabellen weiter: Filter im Hauptfrm für Unterformular Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Tutorial Facebook-Likes Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
Bitsqueezer
Office-VBA-Programmierer


Verfasst am:
07. Dez 2011, 23:35
Rufname:

CSV-Editor / Datenkonvertierer - CSV-Editor / Datenkonvertierer

Nach oben
       Version: (keine Angabe möglich)

Hallo zusammen,

eigentlich könnte man mit Excel ja einen guten CSV-Editor haben. Aber da sind so einige Probleme:
Doppelklick auf eine CSV-Datei, die die Endung "CSV" hat, öffnet automatisch Excel, aber nicht den Anpassungsdialog, so daß meistens die Aufteilung in die Spalten nicht funktioniert (z.B. wenn der falsche Feldtrenner verwendet wird).
Will man diesen haben, muß die CSV-Datei in ".TXT" umgenannt werden, dann kann man mit einer Reihe Einstellungsmöglichkeiten den Import recht komfortabel anpassen. Geht es an den Export, verwendet Excel nur ein paar fest vordefinierte Formate, die Rückkonvertierung in das gleiche Format wie beim Import ist so nicht möglich. Wird das Trennzeichen selbst im Text verwendet, erhält man einen zusätzlichen Felddelimiter, was dann ein Anführungszeichen ist - aber nur da, wo der Text der Zelle das Feldtrennzeichen enthält.
Also wird aus A B C;D in den Excelzellen dann ein A;B;"C;D" in der CSV-Datei. Sehr unhandlich, um es anderswo wieder einzulesen, besonders, da man das Trennzeichen nicht ändern kann.

In Expression Blend gibt es auch so eine CSV-Datei, die im eingebauten SketchFlow verwendet wird, um in Prototypen-Formularen Testdaten anzeigen zu können. Die Datei kann man editieren, wenn man eigene Testdaten hinzufügen will. Aber die Daten sind so nur schwer editierbar. Darum habe ich diesen kleinen CSV-Editor für Access gebaut, mit dem man sich seine Einstellungen einfach speichern kann, so daß man auch nicht jedesmal alles neu einstellen muß (wie bei Excel etwa).

Das Programm ist sehr simpel gehalten und möglicherweise wird es auch nicht bei allen CSV-Dateien gleich gut funktionieren, aber für mich erfüllt es seinen Zweck und vielleicht kann es ja noch jemand brauchen.

Beim Starten erscheint der Data Editor, oben sind zwei Pfeil-Buttons für Import und Export. Wurde rechts daneben im Dateifeld noch keine Datei ausgewählt, erscheint die Dateiauswahlbox beim Klick auf Import, ansonsten, wenn schon ein Dateiname dort eingetragen ist, kann die Datei immer wieder erneut mit dem Import-Button geladen werden. Dazu wird eine Tabelle "tblTemp" immer wieder neu erzeugt. Die Daten werden ohne Beachtung des Inhalts grundsätzlich als String importiert, da man so am flexibelsten bei der Bearbeitung ist. Damit beschränkt sich die Länge jeder Spalte natürlich auf 255 Zeichen (da eine Textspalte in Access nicht mehr haben kann, es sei denn, man nähme Memo-Felder dafür). Das sollte aber im Allgemeinen ausreichen.

In dem blauen Unterformular kann man die Einstellungen verwalten. Jeder Datensatz steht hier für einen Satz Einstellungen. Unter "Column Delimiter" kann man die Spaltentrennzeichen eingeben. Da die Zeile geparst wird, muß sich der Feldtrenner auch nicht auf ein einzelnes Zeichen beschränken, solange es eindeutig ist. Die Einstellungen kann man getrennt für Export und Import festlegen.
Weiterhin gibt es die Checkbox "Has Fieldnames". Ist diese angehakt, wird die erste Zeile in der Datei als Feldnamen interpretiert, andernfalls heißen die Felder, wie in Access üblich, F1 - Fx.
Die Checkbox "Add PK" habe ich eingebaut, damit man den Daten eine optionale zusätzliche Spalte "ID_PK" hinzufügen kann. Das ist notwendig, wenn die Reihenfolge der Datensätze nicht geändert werden darf. Ansonsten kann es passieren, daß, wenn man mehrfach auf "Import" klickt, jedesmal eine andere Reihenfolge in der Tabelle zu sehen ist. Das liegt einfach daran, daß Datensätze in einer Datenbank nicht sortiert vorliegen, lediglich der PK stellt sicher, daß die Daten in der physikalischen Reihenfolge des PKs sortiert ausgegeben werden. Die Spalte wird auch nur als numerische PK-Spalte angelegt, nicht als Autowert-Spalte.

Mit dem Button "Field Settings" kann man ein weiteres Fenster aufrufen, daß die einzelnen Feldeinstellungen speichert. Die Reihenfolge der Feldnamen spielt hier keine Rolle, nur sollte der gleiche Feldname in einer Einstellung nicht zweimal auftauchen.

Wenn man nun etwa feststellt, daß Daten in die falsche Spalte rutschen, weil nur ein Teil der Daten einer Spalte mit einem Anführungszeichen umgeben ist, dann kann man hier den Feldnamen (oder Fx mit x = Nummer der Spalte) eintragen und unter "Field Delimiter Import" das Anführungszeichen. Dann wird die betreffende Spalte daraufhin untersucht, ob sie von diesem Trennzeichen umgeben ist und diese werden aus den Daten entfernt, so daß man am Ende nur die reinen Daten in der Tabelle hat.

Mit den "Format"-Spalten kann man noch eine ganze Menge mehr tricksen. Die Formate werden einfach in der gleichen Art eingegeben, wie man sie auch für den VBA-Format-Befehl verwendet, also zum Beispiel "hh:mm:ss" für einen Uhrzeit-Formatstring. Ich habe mal bereits eine ganze Menge vordefiniert, so daß für die meisten Zwecke schon alles per Dropdown ausgewählt werden kann. Man kann aber auch manuell eigene eingeben oder die Tabelle "tblFormattingTypes" direkt öffnen, diese listet die Typen auf und kann mit dem [+]-Symbol zu jedem Typ die passenden Einträge anzeigen und editieren. Ein eigenes Formular dafür zu schreiben, habe ich mir erspart, da diese Anwendung ohnehin nur Sinn macht, wenn man über die Vollversion verfügt, damit man auch die folgenden Datenkonvertierungen hinzufügen kann.

Damit man nicht nur auf die relativ einfachen Formatierungsmöglichkeiten des Format-Befehls beschränkt ist, habe ich eine Schnittstelle eingebaut, die beliebige VBA-Funktionen während des Imports bzw. Exports ausführen kann. Dazu muß der Name der Funktion nur mit "fn" beginnen, einen String zurückliefern und mindestens einen String für den Parameter entgegennehmen. Beispiele sind im Modul "modConverters" zu finden, die Aufrufe sind in der Beispieleinstellung "SampleStrings with Formatting" zu finden. Im Beispiel wird eine Farb-Hexzahl (z.B. "#FFFF0000") in einen VBA RGB-Funktionsstring umgewandelt, in dem Beispiel zu "RGB(255,0,0)" und wieder zurück beim Export. Es sind auch ein paar weitere Konverterfunktionen im Modul, die man verwenden kann.

Das Praktische ist, daß man so beliebig komplexe Konverterfunktionen hinzufügen kann, die die Eingabedaten komplett umwandeln können. Die fertige Tabelle kann man dann entweder in Access editieren und wieder exportieren, dabei ggf. weiter umwandeln, oder die Tabelle selbst mit den Access-Exportern exportieren oder ganz simpel per Copy & Paste in z.B. eine Excel-Tabelle.

Oben gibt es noch eine Drop-Down-Liste "Jump To", damit kann man schneller gezielt zu der gewünschten Einstellung wechseln.

Die Einstellung "Default" wird standardmäßig als erstes von der Klasse "clsTableSpecifications" geladen und sollte daher nicht gelöscht werden, es ist aber kein Sicherheitsmechanismus eingebaut, der das verhindert. Die anderen Einstellungen sind nur Beispiele und können gelöscht werden. Beim Löschen einer Einstellung werden auch automatisch alle Feldeinstellungen mit gelöscht.

Bei Access 2010 habe ich festgestellt, daß hier die Verweise auf die Office-Library und die DAO-Library nicht richtig verwendet werden, in A2010 muß man diese also ggf. neu setzen. In älteren Versionen als 2007 könnte das ebenfalls erforderlich sein, da es hier ja keine Office 12/14-Libraries gibt. Diese wird nur für den Filedialog gebraucht.

Die Datei enthält die A2007-Version sowie umgewandelte Versionen für 2000-2003. 2010 kann mit der 2007er-Version direkt arbeiten. Bei den Versionen 2003 und kleiner wird das Unterformular für die Temporärtabelle vermutlich nicht automatisch vergrößert, da es das Anchoring erst seit 2007 gibt, d.h., man muß hier das Unterformular manuell anpassen.

Die Funktionen des CSV-Editors kann man natürlich auch in eigene Datenbanken einbauen, wenn man Datenimport, -export und -konvertierung verwenden möchte, ohne jedesmal das Rad neu zu erfinden. Die Import- und Export-Subs befinden sich im Formular des Data Editors selbst.

In der Zip-Datei befindet sich auch die CSV-Datei aus ExpressionBlend, damit man alles mit den vordefinierten Einstellungen mal ausprobieren kann.

Viel Spaß beim Experimentieren..

Christian



CSV-Edit.zip
 Beschreibung:
CSV-Editor in den Versionen Access 2000-2007 (2010) sowie eine Test-CSV-Datei

Download
 Dateiname:  CSV-Edit.zip
 Dateigröße:  288.36 KB
 Heruntergeladen:  255 mal

derArb
getting better


Verfasst am:
07. Dez 2011, 23:57
Rufname: derArb
Wohnort: Berlin


AW: CSV-Editor / Datenkonvertierer - AW: CSV-Editor / Datenkonvertierer

Nach oben
       Version: (keine Angabe möglich)

Hallo,
cooler Tip und danke für die Beispiel DB

_________________
MfG
derArb

Scio me nihil scire...Εν οίδα οτι ουδέν οίδα... Ich weiss, dass ich nichts weiss (Sokrates)
Ich bevorzuge Beiträge mit korrekter deutscher Grammatik.
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind
GMT + 1 Stunde

Diese Seite Freunden empfehlen

Seite 1 von 1
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: HTML Forum