Automatisches umwandeln bzw. konvertieren von xls in ein txt format
Beim Datenbankexport in eine TXT-Datei, werden Tabulatoren als "Leerzeichen" dargestellt
Mahlzeit liebe Admins und Script-Gurus....
Ich verzweifel an folgendem Problem (fasse es extrem kurz).
Ich will, mittels einem Datenbankexport, unsere Lagerbestandsliste in eine Textdatei (Tabulatorgetrennt/Tabstopgetrennt) exportieren. Leider sieht es nur optisch so aus, als wären es Tabulatoren. In wirklichkeit sind es Lerrzeichen.
Exporteiere ich meine Daten in ein xls Format (Excelldatei), und speichere diese Datei im Excell selbst dann als Tabulatorgetrennte Datei (TXT), sind es wirklich richtige Tabstops.
Ich vermute, dass es mehr ein Softwareproblem unserer Anwendungssoftware ist.
Daher wollte ich fragen, ob ihr villeicht ne Möglichkeit kennt, wie ich per Taskmanager und einem Script sagen kann, dass er die Excelldatei in eine TXT datei konvertieren soll, ohne dass auch nur eine Officeanwendung nötig ist.
Folger Hintergrund:
- Die exportierte Datei wird auf dem Server (SBS2003) gespeichert
- Eine Batch lädt im stündlichen Intervall diese Datei auf einen entfernten FTP hoch
- In der Datei sind unsere Lagerbestandslisten die in einem Unternehmensnetzwerk via web veröffentlicht werden.
Damit der ganze Spaß auch funktioniert, muss die Datei unbedingt eine txt Datei sein.
Hat jemand von euch ne Idee wie ich das durch reines Scripting lösen kann? Ich will keine extra Software installieren, die diesen Spaß macht.
Vielen Dank im Voraus für eure Hilfe
Gruß,
Knut
Mahlzeit liebe Admins und Script-Gurus....
Ich verzweifel an folgendem Problem (fasse es extrem kurz).
Ich will, mittels einem Datenbankexport, unsere Lagerbestandsliste in eine Textdatei (Tabulatorgetrennt/Tabstopgetrennt) exportieren. Leider sieht es nur optisch so aus, als wären es Tabulatoren. In wirklichkeit sind es Lerrzeichen.
Exporteiere ich meine Daten in ein xls Format (Excelldatei), und speichere diese Datei im Excell selbst dann als Tabulatorgetrennte Datei (TXT), sind es wirklich richtige Tabstops.
Ich vermute, dass es mehr ein Softwareproblem unserer Anwendungssoftware ist.
Daher wollte ich fragen, ob ihr villeicht ne Möglichkeit kennt, wie ich per Taskmanager und einem Script sagen kann, dass er die Excelldatei in eine TXT datei konvertieren soll, ohne dass auch nur eine Officeanwendung nötig ist.
Folger Hintergrund:
- Die exportierte Datei wird auf dem Server (SBS2003) gespeichert
- Eine Batch lädt im stündlichen Intervall diese Datei auf einen entfernten FTP hoch
- In der Datei sind unsere Lagerbestandslisten die in einem Unternehmensnetzwerk via web veröffentlicht werden.
Damit der ganze Spaß auch funktioniert, muss die Datei unbedingt eine txt Datei sein.
Hat jemand von euch ne Idee wie ich das durch reines Scripting lösen kann? Ich will keine extra Software installieren, die diesen Spaß macht.
Vielen Dank im Voraus für eure Hilfe
Gruß,
Knut
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 105583
Url: https://administrator.de/contentid/105583
Ausgedruckt am: 24.11.2024 um 18:11 Uhr
10 Kommentare
Neuester Kommentar
Servus,
wenn ich deine Zeilen richtig interpretiere, müßte deine Überschrift lauten:
XLS benutzt du ja nur als zwischenschritt.
richtig?
wenn ich deine Zeilen richtig interpretiere, müßte deine Überschrift lauten:
Suche Script um aus einer Textdatei mit fester Spaltenbreite eine CSV Datei zu erstellen?
XLS benutzt du ja nur als zwischenschritt.
richtig?
Wie exportierst du denn in TXT?
Da wirst du doch sicherlich die Möglichkeit haben das Umzustellen
Alternativ ein Script in Excel, welches per Button die Datei öffnet und neu speichert.. aber ist 1. Arbeit zu Pogrammieren und 2. Ein Zusatzschritt der nicht optimal ist
Da wirst du doch sicherlich die Möglichkeit haben das Umzustellen
Alternativ ein Script in Excel, welches per Button die Datei öffnet und neu speichert.. aber ist 1. Arbeit zu Pogrammieren und 2. Ein Zusatzschritt der nicht optimal ist
Hallo knut4linux!
Um nochmals TimoBeils Frage aufzugreifen: Wenn der direkte Export "optisch Tabulatorgtrennt" ausssieht, wäre ich auch davon ausgegangen, dass die einzelnen Felder eine jeweils konstante Spaltenbreite haben - den Satz auf dieser Basis zu trennen und die überzähligen Leerzeichen zu entfernen erforderte zB mit einem VBScript nicht viel Aufwand ...
[Edit] ... nämlich etwa so:
Damit wird aus
das:
[/Edit]
Grüße
bastla
Um nochmals TimoBeils Frage aufzugreifen: Wenn der direkte Export "optisch Tabulatorgtrennt" ausssieht, wäre ich auch davon ausgegangen, dass die einzelnen Felder eine jeweils konstante Spaltenbreite haben - den Satz auf dieser Basis zu trennen und die überzähligen Leerzeichen zu entfernen erforderte zB mit einem VBScript nicht viel Aufwand ...
[Edit] ... nämlich etwa so:
FIn = "D:\Test.txt"
FOut = "D:\TestWithTabs.txt"
ColsW = Array(10,7,8,5,20) 'Spaltenbreiten der einzelnen Felder
Delim = vbTab 'Trennzeichen im Ergebnis
UCols = UBound(ColsW) 'Anzahl Spalten ermitteln
ColsS = ColsW 'Array für Startpositionen der einzelnen Spalten erzeugen
ColsS(0) = 1 'Vorgabe Startposition des ersten Feldes in der Zeile (nicht null-basiert)
For i = 1 To UCols 'Startpositionen der übrigen Felder ermitteln
ColsS(i) = ColsS(i-1) + ColsW(i-1) 'Startposition abhängig von vorhergehender Startposition
Next
Set fso = CreateObject("Scripting.FileSystemObject")
Lines = Split(fso.OpenTextFile(FIn).ReadAll, vbCrLF) 'Daten in Array einlesen
ULines = UBound(Lines) 'Anzahl der Zeilen ermitteln
Set FileOut = fso.CreateTextFile(FOut, True) 'Ausgabedatei öffnen (ev bereits bestehende Datei wird überschrieben)
For i = 0 To ULines 'alle eingelesenen Zeilen einzeln bearbeiten
LineOut = "" 'Ausgabezeile initialisieren
For j = 0 To UCols 'alle Spalten der Zeile einzeln bearbeiten
Field = Trim(Mid(Lines(i),ColsS(j),ColsW(j))) 'Feld aufgrund der Position und Breite einlesen und überzählige Leerzeichen entfernen
LineOut = LineOut & Delim & Field 'Feld durch Trennzeichen ("Delim") getrennt an Satz anfügen
Next
If i < ULines Then LineOut = LineOut & vbCrLF 'an alle außer die letzte Zeile eine Zeilenschaltung anfügen, ...
FileOut.Write Mid(LineOut, Len(Delim) + 1) '... überzähliges Trennzeichen am Beginn der Zeile entfernen und in Datei schreiben
Next
FileOut.Close
123456789 123456 1234657 1234 12345678901234567890
123456 1236 1 12 123456789012
12345678 123 1234 123 123456789012345678
123 123456 123 1234 1234567890
1 1 1 1 1
123456789 123456 1234657 1234 12345678901234567890
123456 1236 1 12 123456789012
12345678 123 1234 123 123456789012345678
123 123456 123 1234 1234567890
1 1 1 1 1
Grüße
bastla
@knut4linux
... aber brich Dir bitte nix.
Grüße
bastla
*niederkniehend vor dir hinwerf
Ich freu' mich ...... aber brich Dir bitte nix.
Grüße
bastla
Hallo, bin über google auf diesen Eintrag gestolpert.
Guter job, hat mich auch ein wenig schlauer gemacht, aber....
Ich habe ein ähnliches Problem, die txt mit Tabulatoren ist immer schön lesbar ausgerichtet (hierbei immer mit Leerzeichen aufgefüllt).
Ich kann leider nicht die Spaltenbreiten fest definieren, diese sind immer unterschiedlich, Beispiel:
ich brauche jedoch:
Eine Besonderheit noch: vor der 123456 kommt noch eine leere spalte, somit habe ich 6 Spalten.
Ist dieser script für meine Zwecke anpassungstauglich?
Vielen Dank im voraus.
Guter job, hat mich auch ein wenig schlauer gemacht, aber....
Ich habe ein ähnliches Problem, die txt mit Tabulatoren ist immer schön lesbar ausgerichtet (hierbei immer mit Leerzeichen aufgefüllt).
Ich kann leider nicht die Spaltenbreiten fest definieren, diese sind immer unterschiedlich, Beispiel:
2574 123456 18,17 EUR 1
DR3300 123456 93,07 EUR 138
LC1000BK 123456 14,18 EUR 2
2574 123456 18,17 EUR 1
DR3300 123456 93,07 EUR 141
LC1000BK 123456 14,18 EUR 2
Ist dieser script für meine Zwecke anpassungstauglich?
Vielen Dank im voraus.