gelöst Mit einer Batch eine Excel Tabelle auslesen.

Mitglied: Hummel85

Hummel85 (Level 1) - Jetzt verbinden

18.05.2006, aktualisiert 18.10.2012, 26936 Aufrufe, 16 Kommentare

Hallo,

ich hab schon wieder die nächste Frage zu einer Batch. Ist es möglich bestimmte bereiche aus einer Excel Tabelle mittels batch auszulesen? Also nur zur Info für euch. Ich habe eine Excel Tabelle( es sind immer verschiedene aber der Aufbau an sich ist immer gleich). Will dort einige Daten auslesen die ich dann weiter verarbeiten kann.

Vielen Dank im Voraus.
Mitglied: gogoflash
18.05.2006 um 13:15 Uhr
Hi,

mit Excel wirds schwierig, aber als *.csv Datei. Sollte es gehen. Excel bietet das Format an.Spalten werden dann mit Semikon getrennt.
Oder *.prn

Schau Dir mal beides an.


Gruß Miguel
Bitte warten ..
Mitglied: Hummel85
18.05.2006 um 13:41 Uhr
Hi gogoflash,

vielen dank für die schnelle Antwort war vor allem sehr hilfreich. also mit *.csv kann ich schon was anfangen aber mit *.prn leider nicht. Aber eines reicht ja auch. Jetzt brauch ich nur noch eine Möglichkeit bestimmte bereiche aus dieser *.csv( ist ja nicht mehr als eine Textdatei) auszulesen und in meine Batch zu übertragen.

Vielen dank noch mal. Wenn jemand ein schnellen weg kennt wie ich die Daten aus der *.csv auszulesen, kann das hier gleich Posten.
Bitte warten ..
Mitglied: gogoflash
18.05.2006 um 13:43 Uhr
Hi,

dann musst Du schon sagen, wie zu auf die einzelnen Bereiche zugreifen willst.
Suchen nach Stichwörtern. In Zeile oder Spalte gehen?

Sag mal wie Du es Dir vorstellst.

Als Beispiel:
Für eine Tabelle mit 7 Spalten getrennt durch Semikolons (Auswertung ab der 2 Zeile)

for /f "skip=2 tokens=1,2,3,4,5,6,7 delims=;" %%a in (p.csv) do echo %%a >> excel.txt

Der Inhalt der ersten Spalte wird ausgelesen.

[EDIT: Ed geht auch
for /f "skip=2 tokens=1-7 delims=;" %%a in (p.csv) do echo %%a >> excel.txt

Nur für die erste Spalte
for /f "skip=2 tokens=1 delims=;" %%a in (p.csv) do echo %%a >> excel.txt

]


Gruß Miguel
Bitte warten ..
Mitglied: Hummel85
18.05.2006 um 14:11 Uhr
Sorry habe ich vergessen.

Also die Excel Tabelle exestiert schon muss aber noch umgebaut werden.

Ich habe mir das so vorgestellt.

14 Spalten( brauche aber nur 10 Spalten auslesen)
Anzahl der Zeilen kann variieren.( Aber 3 Zeilen gehören immer zusammen die ersten beiden Spalten gehören zu allen 3 Zeilen und die anderen 8 sind unterschiedlich kommen aber nicht Doppelt vor.)

1 2 3 4 5 6 7 8 9 10
* * *
* * * * *
* * * *

Also das ist ein Beispiel.

Die Infos in Spalte 1 & 2 sind immer Identisch ( bei den 3 zusammen hängenden zeilen)
Die restlichen sind immer individuell aber kommen niemals doppelt vor kann aber sein das überhaupt keiner ausgefüllt ist..

Ich hoffe das hilft dir weiter.
Bitte warten ..
Mitglied: gogoflash
18.05.2006 um 14:26 Uhr
Hi,

mach es mal etwas konkreter. Du hast jetzt die Tabelle dargestellt. Wie soll es am Ende aussehen.

Etwas plastischer wäre nicht schlecht.


Gruß Miguel
Bitte warten ..
Mitglied: gogoflash
18.05.2006 um 15:15 Uhr
Hi,

jetzt hab ich glaub ich gerafft. Wenn Du nachdem die 3er Gruppen ausgewertet wurden (gehören ja zusammen). Soll eine Aktion durchgeführt werden, dann auslesen der nächsten Dreiergruppen bis zum Ende ?


REM Achtung erste Zeile wird nicht ausgelesen, dort können die Tabelleninfos stehen
set /A "skip=1"

:main
set /A "zahl=0"
REM Beginn der für die 3erGruppen wird mit %Skip verschoben

for /f "skip=%skip% tokens=3,4,5,6,7,8,9,10 delims=;" %%a in (p.csv) do call :sub %%a %%b %%c %%d %%e %%f %%g %%h
:goto :eof

:sub

REM Wenn 3er Gruppe ausgewertet wird eine Aktion durchgeführt.
REM Hier eine Info in die Excel.txt

IF %Zahl%==3 goto :bofif
goto :eofif
:bofif

REM mach Irgendwas
echo 3er Gruppe zuende >> excel.txt
goto :main
:eofif

REM Hochzählen
set /A "Zahl+=1"
set /A "skip=skip+Zahl"

echo %1 >> excel.txt

:eof

Ist in erster Näherung zusammengeschrottet, aber als Denkansatz....


Gruß Miguel
Bitte warten ..
Mitglied: Hummel85
19.05.2006 um 07:05 Uhr
Guten Morgen gogoflash,

Danke für deine Hilfe. War sehr Hilfreich. Nur es funktioniert noch nicht so ganz( ich weiß sollte nur ein Denkansatz sein aber vielleicht hilfst du mir ja weiter).

Da ich bis jetzt noch nicht mit Schleifen gearbeitet habe( konnte mich jetzt davor drücken) weiß ich leider nicht wie ich die Schleife bearbeiten soll um zum gewünschten Ergebnisse zu kommen.

Hier noch ein paar Infos.

Meine p.csv sieht so aus( mit einem Texteditor geöffnet)

"SW
Typ";"SW-
Art";GS1;"GS2/
LS2";LS3;LS4;LS5;LS6;LS7;LS8
3;30;;;ge/bli;;;;;
;;;;;;gn/bli;;;
;;;;;;;;rt/bli;

Was ich daraus brauche ist.

3
30
ge/bli
gn/bli
rt/bli

Meine Textdatei soll so aussehen:

Typ 3
[Signal_1_Art_30]
ge/bli

[Signal_2_Art_30]
gn/bli

[Signal_3_Art_30]
rt/bli


Also Typ(3) ist klar.
Art(30) ist auch klar.
Farbe(rt/bli z.b.) ist denk ich mal auch klar.
Was ich auch noch brauche ist halt Signal.

Was ich vor allem mal brauch ist ein Tutorial wo Schleifen gut beschrieben sind. Wenn mir das noch jemand geben kann ist mein Tag gerettet.
Bitte warten ..
Mitglied: gogoflash
20.05.2006 um 16:11 Uhr
Hi,


erstmal Teilantworten bis am Ende, ein Vorschlag von mir steht.

1) Signal_1 usw werden doch nur hochgezählt oder.

Erzeugt in test.txt

signal_1
signal_2
signal_3

2)

erzeugt:
Typ 3
[Signal_1_Art_30]
[Signal_2_Art_30]
[Signal_3_Art_30]


3) Jetzt kommt es:

Innerhalb der Hochzählschleife, wird mit findstr (ge/bli; gn/bli; rt/bli) gesucht. findstr /N gibt die Zeilenzahl an, getrennt mit Doppelpunkt (ZB 5.
Durch das Hochzählen in der For Schleife wird %zahl% definiert. Diese legt fest welche Zeile zu betrachten ist, stimmt diese Zahl mit dem Überein, was findstr gefunden hat, wird entsprechend ge/bli usw ausgegeben. Es funktioniert auch dann noch wenn zb ge/bli doppelt vorkommt.
Die Spaltenzahl ist hier nicht wichtig, da über findstr durchgeschliffen. Das macht die Sache viel einfacher, da wir nicht mehr mit Spalten arbeiten müssen.
findstr /N "ge/bli" plt.txt' gibt mir die Zeilenzahl in der ge/bli vorkommt. Damit nicht die erstbeste ge/bli genommen wird (kann ja mehrmals vorkommen), wird %zahl% benötigt.

4) Alles Zusammen (es kommt noch schlimmer unter 6):

Erzeugt:
Typ 3
[Signal_1_Art_30]
ge/bli
[Signal_2_Art_30]
gn/bli
[Signal_3_Art_30]
rt/bli

5) Jetzt die Übelste Variante, die Tabelle enthält mehr Typen (1-3 zb)

Sei die Tabelle in der Form

dann ergibt sich:

6) Entfassung Batch:
- Für einen Haufen Typen egal ob sie exisiteren oder nicht. Sie werden dann nicht ausgegeben.
Dafür %test% Variable definiert und test, ob Typ vorhanden.
more +%heradera% %datei% sorgt, dafür das der Kopf der Tabelle irgnoriert wird.
for /F "tokens=1,2 delims=;" %%a in ('more +%headera% %datei%^|find "%1;"') Do set /A "test=%%a" && set Art=%%b
if not %test%==%1 goto :eff

- Es können mehrere Farbwerte pro Zeile vorkommen (rt/bli;ge/bli)

- Spaltenposition für Farbwerte egal

Gruß Miguel
Bitte warten ..
Mitglied: Biber
20.05.2006 um 21:01 Uhr
Moin Hummel85 und Miguel,

kann mich hier aufs Mitlesen beschränken - ist alles in guten Händen, denke ich.
Nur als kleine handwerkliche Tipps (zum vorletzten Schnipsel):

Hier ginge es ohne Sub
@Hummel85
Kann denn immer nur genau EIN Farbwert pro Zeile auftauchen? Und ist die Spaltenposition unwichtig?

Gruß
Biber
Bitte warten ..
Mitglied: Hummel85
22.05.2006 um 10:13 Uhr
Guten Morgen,

erstmal vielen dank für die Hilfreichen Antworten.

An gogoflash: Werde die Batch im laufe des Tages testen. Vielen dank schon mal.

An Biber: Es kann nur ein Farbwert pro Zeile geben(rt oder gn oder rt/bli [steht für blinkendes rot Signal]). Und die Spalten Position ist genau so wichtig wie die Zeilen Position.

Die Spalte gibt an welchen LS( Lampenschalter) wir benutzen, und die Zeile gibt an welches Signal das ist[ gilt aber nur innerhalb der dreier Gruppe]. Es kann aber auch sein das nur 1 Signal existiert. Dann steht da natürlich nix.

Gruß Hummel

P.S. Ich melde mich im laufe des Tages wegen der Batch.
Bitte warten ..
Mitglied: gogoflash
22.05.2006, aktualisiert 18.10.2012
Hi,

ich bastle gerade an einem Tutorial rum, darin ist die Suche nach Elementen und ausgabe von SPalten und Zeilen enthalten.

https://www.administrator.de/wissen/in-tabellen-rumrechnen-mittels-batch ...

Und ausserdem wäre eine Zuordung von Spaltenzahl und Signalnummer nicht schlecht.


Gruß Miguel
Bitte warten ..
Mitglied: Hummel85
23.05.2006 um 09:05 Uhr
Guten Morgen,

Ja das Tutorial sieht nicht schlecht aus. Werde ich mir mal bei gelegenheit durchlesen.

Und zu dem 2. Punkt

"Und ausserdem wäre eine Zuordung von Spaltenzahl und Signalnummer nicht schlecht."

Wie soll ich das verstehen? Was soll ich dir den jetzt schreiben?
Bitte warten ..
Mitglied: Hummel85
30.05.2006 um 13:17 Uhr
Hallo Miguel,


ich habe gerade deine Batch ausprobiert.
Leider muss ich sagen das sie mich dem Ziel nur ein wenig näher bringt.

So wie ich das gelesen habe Funktioniert diese Batch nur mit den 3 Farben( ge/bli, rt/gli und gn/bli). Und das erweitern auf alle Farben ist nahezu unmöglich weil es nicht nur Farben sein können sondern auch Buchstaben und so.

Doch nach dem Testen der nächste schock. Sobald ich was an der Tabelle (plt.txt) ändere geht nichts mehr. Die Batch erstellt nicht einmal die Test.txt.

Ich habe die Excel Tabelle ein wenig verändert.
Leider habe ich wenig Zeit um die Batch selber anzupassen. Und außerdem sind mir da wieder zu viele schleifen drin womit ich wieder nicht klar komme. Wäre also nett wenn du mir die Batch anpassen kannst.


Inhalt der plt.txt
Typ ;Art;LS1;LS2;LS3;LS4;LS5;LS6;LS7;LS8
2;1;rt;;gn;vi;;;;
;;;rt;;;gn;;;
;;;;;;;vi;;
2;2;rt;;gn;vi;;;D;
;;;rt;;;gn;;;D
;;;;;;;vi;;
2;3;rt;;;vi;;;D;
;;;;;;;;;M
;;;;gn;;;;;


Vielen dank im Voraus.

Gruß Hummel
Bitte warten ..
Mitglied: gogoflash
30.05.2006 um 14:35 Uhr
Hi,

nachdem das Problem immer etwas komplexer wird bzw ständig modifiziert wird,sollten wir uns eine Strategie ausdenken.
Ist nun die letzte plt.txt die Entgültige Fassung?
Wie soll es am Ende aussehen?
Wieso ist jetzt vorne bei "Art" immer das gleiche ?
Jetzt sind auf einmal mehrere Farben in einer Zeile. rt vi D ????

Du solltest deine Fragestellung nicht ständig ändern. Das führt dazu, dass das Skript nicht brachbar ist und eigentlich von Grund auf neu konzipiert werden sollte.

So kann ich auch nicht arbeiten. Sorry.

Aufgabenstellung genauer stellen....

Gruß Miguel
Bitte warten ..
Mitglied: Hummel85
31.05.2006 um 07:05 Uhr
Morgen Miguel,

Also die plt.txt sieht ständig anderes aus.
Aber vom Aufbau an sich ändert sich nichts.
Nur der Inhalt.

Ich Schreibe dir einfach unter die Zeile in der plt.txt was in den einzelnen Dateien stehen soll.
(Rot ist der Inhalt der in der INI Datei stehen soll)
Typ ;Art;LS1;LS2;LS3;LS4;LS5;LS6;LS7;LS8
2;1;rt;;gn;vi;;;;
[Signal_2_art1]
LS1=rt
LS3=gn
LS4=vi

;;;rt;;;gn;;;
[Signal_2_art1]
LS2=rt
LS5=gn

;;;;;;;vi;;
[Signal_2_art1]
LS6=vi

2;2;rt;;gn;vi;;;D;
[Signal_2_art2]
LS1=rt
LS3=gn
LS4=vi
LS7=D

;;;rt;;;gn;;;D
[Signal_2_art2]
LS2=rt
LS5=gn
LS8=D

;;;;;;;vi;;
[Signal_2_art2]
LS6=vi

2;3;rt;;;vi;;;D;
[Signal_2_art3]
LS1=rt
LS4=vi
LS7=D

;;;;;;;;;M
[Signal_2_art3]
LS8=M

;;;;gn;;;;;
[Signal_2_art3]
LS3=gn


Um das Ganze aber noch Komplett zu machen. Brauch ich das Ganze nicht in einer INI Datei sondern in 3.

Typ1.ini:
[Signal_2_art1]
LS1=rt
LS3=gn
LS4=vi

[Signal_2_art2]
LS1=rt
LS3=gn
LS4=vi
LS7=D

[Signal_2_art3]
LS1=rt
LS4=vi
LS7=D

Typ2.ini:
[Signal_2_art1]
LS2=rt
LS5=gn

[Signal_2_art2]
LS2=rt
LS5=gn
LS8=D

[Signal_2_art3]
LS8=M

Typ3.ini:
[Signal_2_art1]
LS6=vi

[Signal_2_art2]
LS6=vi

[Signal_2_art3]
LS3=gn


So zu deiner nächsten Frage. Bei Art Steht nicht immer das gleiche. ich denke mal du meinst bei Typ. Das ist aber nur Zufall.

Leider habe ich auch gemerkt dass ich bei einem Beitrag einen Großen Fehler gemacht habe. Aber jetzt ist es wirklich so wie es bleiben wird.

Ja das mehrere Farben in einer Zeile stehen können habe ich aber gesagt aber innerhalb der dreier Gruppe gibt es nur ein Eintrag pro Spalte. Also Pro LS kann es nur eine Farbe innerhalb einer dreier Gruppe geben. Doppelbelegung gibt es nicht.

Ich hoffe mit diesen Angaben kannst du mehr anfangen.


Und Entschuldige bitte dass ich so viel verändern musste.
Aber ich bekomme auch immer neu Infos. "Ich will das aber lieber so."
Darum habe ich einfach gesagt das es mir egal ist was die wollen ich erstelle mir einfach aus der Excel Tabelle mit einem Makro die Tabelle die ich brauch um die mit der Batch die INI Dateien zu generieren. Darum wird es keine weitere Veränderung der plt.txt geben außer der Inhalt(Farben, Art, Typ). Aber der Aufbau ist immer gleich. Also die Batch darf nicht auf Wörter reagieren sondern auf die Position in der plt.txt.


Danke schon mal im Voraus.
Bitte warten ..
Mitglied: gogoflash
01.06.2006 um 01:14 Uhr
Hi,


ich hab auch nicht so die Zeit eine Vollständige Lösung zu präsentieren.
Aber wir werden uns, dass Ding mal von der anderen Seite betrachten.

Zum Verständnis der Schleifen.

Mal ganz Sprachlich für ein 3 Zeilen Modell.

----------------Sprach Batch ------------
Für jede Zeile (1,2,3) mach folgendes:

Wenn Du in der ersten Zeile bist gehe zu Los1, sonst gehe zu Los2.

LOS1:
Lese von der ersten bis zur letzen Spalte die Werte aus.
Ignoriere unsinnige Werte (Leerzeichen oder keine Zeichen)
Folgende Regeln sind zu beachten:
i) In der Spalte 1 ist das Signal
In der Spalte 2 ist die Art
Diese sollte ich mir merken.
ii) Spalte 3=LS1
Spalte 4=LS2
Allgemein: Für n > 2 gilt Spalte n=LS(n-2)
iii) Typdatei wird durch Zeilennummer definiert.
Zeile 1 = Typ1 usw
iv) Ausspucken von Werten in die Typdatei, sowie die LS Werte untereinander.
ENDE von LOS1

LOS2:
Falls Zeile > 1.
Lese von der 3 bis zur letzen Spalte.
Führe Teile Los.ii) und Los.iii) sowie Los.iv) aus.
Die Werte und Los.i) sind ja schon gelesen worden.
ENDE von LOS2
----------------Sprach Batch ------------


Dieses Modell braucht schon mal 2 Schleifen. Einmal für die Spalten und einmal für die Zeilen.

Ist das so richtig?

Später kann man ja die gesamte Datei damit durchhaun.


Gruß Miguel
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Excel VBA über Batch starten
gelöst Frage von freshman2017Batch & Shell5 Kommentare

Moin moin, habe folgende VBA: Wie kann ich VBA auf eine Test.xls, die auf dem Desktop liegt, anwenden, sodass ...

Batch & Shell

Excel Makro über Batch Datei ausführen

Frage von Kevin091Batch & Shell4 Kommentare

Guten Abend, ich wollte mal fragen, ob es möglich ist ein Excel Makro über eine Batch Datei auszuführen. Ich ...

Batch & Shell

Batch - Excel - automatische Erstellung von fortlaufenden Nummern

gelöst Frage von freshman2017Batch & Shell2 Kommentare

Moin, gibt es eine Möglichkeit über eine Batch eine Excel Liste zu erstellen? In Spalte A soll dauerhaft 10000 ...

Batch & Shell

Doppelte Datensätze in einer Excel über Batch löschen

Frage von syscloud2019Batch & Shell1 Kommentar

Guten Nachmittag, kann ich über eine Batch doppelte Datensätze, anhand Spalte B und C, in einer Excel löschen lassen? ...

Microsoft Office

Suchen mit 2 Werten (x,y) in einer Tabell - Bereich.vergleich gibt nur Wahr oder Falsch aus

gelöst Frage von ArafatMicrosoft Office2 Kommentare

Hallo Zusammen, ich suche in einem 2. Tabellenbatt nach über 2 Werte x und y nach einem 3. Wert. ...

Batch & Shell

Excel Farblich

gelöst Frage von 131181Batch & Shell3 Kommentare

Hallo Leute, habe nur ein kleines Problem und hoffe hier könnt mir helfen. Ich komme gerade nicht auf die ...

Heiß diskutierte Inhalte
Notebook & Zubehör
Macbook oder Surface Book 3?
gelöst Frage von FamousDex089Notebook & Zubehör36 Kommentare

Hallo Zusammen :-), ich bin komplett neu in der IT Admin schiene und neu in diesem Forum. Ich habe ...

Switche und Hubs
Kaufberatung (10G) Switche für Unternehmensnetzwerk
Frage von ipzipzapSwitche und Hubs27 Kommentare

Moin, unsere Firma zieht um und am neu renovierten Standort muss/soll alles neu. Auf drei Etagen stehen Racks, in ...

Humor (lol)
So eine Art Jobangebot
Frage von Melvin.van.HorneHumor (lol)21 Kommentare

Moin, ich habe eben eine Zeit damit zugebracht eine GPO für eine Gruppe von Clients zu erstellen. Egal was ...

Windows Server
AD (virtualisiert) und alle angeschlossenen Clients fahren ungeplant herunter
Frage von tobitobsnWindows Server19 Kommentare

Ich habe aktuell ein Problem, dass ein frisch aufgesetzer Hyper-V mit einem virtualisierten AD regelmäßig 1x die Woche herunterfährt ...

Drucker und Scanner
Vorlage Endlospapier Nadeldrucker
Frage von Hanspeter82Drucker und Scanner13 Kommentare

Hallo, hab die Aufagbe bekommen, eine Vorlage zuerstellen bzgl. Druck auf Endlos Papier über einen Nadeldrucker. Habe allerdings kein ...

Windows 10
FritzBox 7590 VPN
Frage von christian295Windows 1013 Kommentare

Hallo Zusammen, wir haben seit einigen Tagen eine neue FritzBox 7590 und wollen mit ShrewSoft 2.2.2 auf Win 10 ...

Berechtigungs- und IdentitätsmanagementBerechtigungs- und IdentitätsmanagementWebdienste und -serverWebdienste und -serverDatenbankenDatenbankenMonitoring & SupportMonitoring & SupportHybrid CloudHybrid CloudSmall Business ITSmall Business IT