CSV in EXCEL

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
kurtelic
User
Beiträge: 8
Registriert: Dienstag 9. März 2010, 14:29

Samstag 13. März 2010, 16:25

Hallo an alle,
ich bin neu hier und muss mich seit ein paar Tagen mit Python besch�ftigen.
Inzwischen habe ich einige von euren Beitr�gen gelesen, komme aber nicht weiter.

Ich muss ein .csv Datei lesen und anschlie�end daraus ein .xls Datei erzeugen.

Ich lese die csv. Datei mit folgendem code aus:

Code: Alles auswählen

import csv
	reder = csv.reader(open("Test_OR.xls","rb"), delimiter='\t')
	for row in reder:
		print row
und die ausgabe sieht so aus:

['NAME', 'FIRSTNAME', 'NICKNAME', '']
['', 'Datei_Name.pdf', ' ']
['', '', '', '']
['NAME', 'FIRSTNAME', 'NICKNAME', '']
['', 'Datei_Name_2.pdf', ' ']
.
.
.
['', 'Datei_Name_n.pdf', ' ']
[ '', '', '', 'TEST1', '', 'TEST2', '', '', '', '', '', 'TEST3', '', '', '', '',]
['NAME', 'FIRSTNAME', 'NICKNAME', 'Zeit', 'Neue_Zeit', 'Geschwindigkeit', 'WEG', 'GPS', 'Zeit2', 'X_Koor', 'Y_Koor', 'Z_Koor', ]
['', 'Datei_Name_n+1.pdf', '156', '44,676', '5', '-0,8', '6,999', '0,90', '']
['', 'Datei_Name_n+2.pdf', '675', '3,67', '22', '-0,56', '0,0', '9,34', '']
['', '', '', '']


['', '', '', 'TEST1', '', 'TEST2', '', 'TEST3... sind die Kategorien

TEST1 ist eine kategorie und darunter kommen z.B. 'NAME', 'FIRSTNAME', 'NICKNAME' rein
TEST2 ist eine NEUE Kategorie und darunter kommen z.B. 'Zeit', 'Neue_Zeit', 'Geschwindigkeit', 'WEG'
usw. und dann zu jeder unterkategorie kommt ein Wert wie z.B. ['', 'Datei_Name_n+1.pdf', '156', '44,676', '5', '-0,8...

Die Excel-Python.pdf habe ich schon durchgemacht, finde aber auch nicht wirklich weiter....


Mein Code sieht so aus, funktioniert aber nicht wirklich. Es w�re mir auch sehr Wichtig das es alles Dynamisch Funktioniert, d.h. falls neue Werte noch dazu kommen, ausgelesen werden und in Excel gespeichert werden.


Code: Alles auswählen

import csv
import sys
from os import *

# Datei �ffnen und einen csv-reader initialisieren
source = file("test.xls", "rb")
reader = csv.DictReader(source, delimiter='\t')

# csv-writer initialisieren und die Kopfzeile schreiben
targetHandle = file("test_output.xls", "wb")
writer = csv.DictWriter(target,["NAME", "FIRSTNAME", "NICKNAME"], delimiter='\t')
writer.writecol({"NAME" : "NAME", "FIRSTNAME" : "FIRSTNAME", "NICKNAME" : "NICKNAME"})
                
for col in reader:

    # Zugriff auf die Felder der jeweiligen Zeilen
    name = col['NAME']
    firstname = col['FIRSTNAME']
    nickname = col['NICKNAME']

    # Tausche Namen und Vornamen und entferne Leerzeichen
    data = {
        'NAME': firstname.replace(' ', ''),
        'FIRSTNAME': name.replace(' ', ''),
        'NICKNAME': nickname.replace(' ', '')
    }

    writer.writerow(data)

# Aufr�umen
source.close()
target.close()

exit()
Ich habe noch ein anderen Code geschrieben, wo ich aber die Kategorie Namen Manuel eingebe und die Zellen zusammenfasse. Ebenso habe ich auch f�r die Unterkategorien gemacht, finde es aber nicht so besonders professionell und sch�n. Ich hoffe Ihr k�nnt mir helfen...


Ich bedanke mich an eure Hilfe in voraus!!!
ms4py
User
Beiträge: 1178
Registriert: Montag 19. Januar 2009, 09:37

Samstag 13. März 2010, 16:40

kurtelic hat geschrieben:Die Excel-Python.pdf habe ich schon durchgemacht, finde aber auch nicht wirklich weiter....
Du meinst aber nicht wirklich die PDF von hier:
http://www.python-excel.org/
In der steht alles ausführlich beschrieben!
BlackJack

Samstag 13. März 2010, 17:33

@kurtelic: Mal so am Rande: Du solltest für CSV-Dateien nicht die Dateiendung '.xls' verwenden. Das ist irreführend.

Was ist eigentlich das genaue Problem?
kurtelic
User
Beiträge: 8
Registriert: Dienstag 9. März 2010, 14:29

Sonntag 14. März 2010, 12:51

Hallo,

@ice2k3: Ja ich meine die PDF. Es ist gut für manche andere Funktionen wie z.B. die Zellen "Einfrieren" usw. aber für einlesen ist nicht so gut. Ich habe alle Beispiele durchgemacht!

@BlackJack:
Es ist ein Problem, weil ich in eine Gruppe Arbeite und die anderen nicht auf .xls verzichten wollen. Es hat mich auch gestört aber da manche auch mit Python etwas machen, haben die zu mir gesagt das Python nicht auf solcher Sachen Empfindlich sei und ich soll es so machen...


Mein Problem ist einlesen von Daten. Ich weiß nicht wie ich die Daten einlese und dann in richtige Zellen reinschreibe.


Danke
Benutzeravatar
Hyperion
Moderator
Beiträge: 7472
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Sonntag 14. März 2010, 13:16

kurtelic hat geschrieben: Mein Problem ist einlesen von Daten. Ich weiß nicht wie ich die Daten einlese und dann in richtige Zellen reinschreibe.
Das ist noch viel zu allgemein! (Nebenbei hast Du das Einlesen doch schon gelöst!?!)

Was sind denn "richtige Zellen"? Wodurch werden sie charakterisiert? Wie sieht die Datenstruktur aus? Versuche das möglichst allgemein zu halten. Dein Beispiel oben ist schon viel zu konkret und komplex. Versuche das Problem so klein wie möglich darzustellen.
BlackJack

Sonntag 14. März 2010, 13:56

@kurtelic: Ich weiss nicht so recht wie ich Deine Antwort interpretieren soll, oder ob Du meinen Einwand richtig verstanden hast. Du hast Dateien mit der Dateiendung '.xls' in denen aber anscheinend Daten im CSV-Format gespeichert sind. Das solltest Du nicht machen, denn bei '.xls' erwartet man das nicht, denn da sind für gewöhnlich Daten im Excel-Format drin. Das ist als wenn Du eine Textdatei mit der Endung '.jpg' abspeicherst -- äusserst irreführend, weil eben draussen "Bild" draufsteht, drinnen aber Text ist.
ms4py
User
Beiträge: 1178
Registriert: Montag 19. Januar 2009, 09:37

Sonntag 14. März 2010, 14:13

kurtelic hat geschrieben: @ice2k3: Ja ich meine die PDF. Es ist gut für manche andere Funktionen wie z.B. die Zellen "Einfrieren" usw. aber für einlesen ist nicht so gut. Ich habe alle Beispiele durchgemacht!
Häh?! Du sollst ja auch das Kapitel zum Schreiben durcharbeiten und nicht das zum Einlesen. Ich habe gedacht, du willst CSV einlesen und in XLS schreiben?!
Falls das deine Aufgabe ist, dann verwendest du den CSV-Reader, den du bisher schon verwendest, zum Einlesen und zum Schreiben gehst du so vor, wie in der PDF beschrieben.

Ansonsten beschreibst du noch mal klar und deutlich deine Aufgabe und Lösungsansätze. Hier sind nämlich wirklich *alle* von deinen Posts ziemlich verwirrt. :?
kurtelic
User
Beiträge: 8
Registriert: Dienstag 9. März 2010, 14:29

Montag 15. März 2010, 00:39

@Alle: Danke für eure mühe! Ich weiß das ich die Leute leicht verwirre mit meine Erklärungsweise! :-)

Es ist so, dieses Code das ich geschrieben habe funktioniert irgendwie nicht...ich kann irgendwie nichts einlesen?!?

@Hyperion: Ich werde es versuchen nochmal kurz zu fassen.

"Richtige Zelle" heißt eine Zelle mit dem Wert Spalte und Reihe z.B. A1
Man könnte z.B. ein Satz "Alle meine Entchen" in eine Zelle schreiben aber den Text würde man auch über mehreren Zellen sehen oder auch
"Alle" in A1
"meine" in B1
"Entchen" in C1
Schreiben. Ich brauche die zweite Möglichkeit. Die Werte die da drin enthalten sind, müssen weiter verarbeitet werden. Die enthalten Integer, Double und String Daten.
Ich hoffe das jetzt etwas klarer ist.


Kann man dieses Teil nicht irgendwie allgemein lösen? Ich hätte es gern allgemein,d.h. das ich die Ueberschriften nicht eingebe,sondern Python liest es aus der .xls?

Code: Alles auswählen

writer = csv.DictWriter(target,["NAME", "FIRSTNAME", "NICKNAME"], delimiter='\t')
writer.writecol({"NAME" : "NAME", "FIRSTNAME" : "FIRSTNAME", "NICKNAME" : "NICKNAME"})
@BlackJack:
Ja danke dir auch, ich habe es verstanden, werde dann mit denn anderen reden und bitten das ich die Datei in .csv bekomme.
Die haben mir gesagt das es egal ist,python kann es auch so gut verstehen und richtig interpretieren.

@ms4py: :-) Habe ich auch alle beide, funktioniert einlesen trotzdem irgendwie nicht...
BlackJack

Montag 15. März 2010, 08:27

@kurtelic: Ich glaube so kommen wir nicht weiter.
kurtelic hat geschrieben:Es ist so, dieses Code das ich geschrieben habe funktioniert irgendwie nicht...ich kann irgendwie nichts einlesen?!?
Was soll man denn dazu sagen!? Wahrscheinlich machst Du irgendwie was falsch.

"Funktioniert nicht" ist keine Fehlerbeschreibung bei der man helfen kann, insbesondere wenn der Quelltext der irgendwie nicht funktioniert gar nicht bekannt ist.
Benutzeravatar
Käptn Haddock
User
Beiträge: 167
Registriert: Freitag 24. März 2006, 14:27

Montag 15. März 2010, 09:14

Nur so am Rande: Excel importiert ganz vorzüglich csv-Dateien ganz ohne etwas zu tun. Wie deine Inhalte dann Feldern und Typen zugeordnet werden, ist allein eine Sache des eingestellten Feldtrenners und des String-Begrenzers. Du kannst sogar die Position des importierten Bereichs in der Tabelle wählen und das Encoding auswählen, AFAIR.
Naja, vielleicht versteh ichs aber auch nicht worum es geht.

Gruß UWe
---------------------------------
have a lot of fun!
Benutzeravatar
mkesper
User
Beiträge: 919
Registriert: Montag 20. November 2006, 15:48
Wohnort: formerly known as mkallas
Kontaktdaten:

Montag 15. März 2010, 13:37

Hallo,

Habe nochmal versucht, deinen Code zu verstehen. Du vermischst irgendwie zeilen- und reihenweises Vorgehen. Versuche doch, einfach, für jede Zeile (row), die du einliest, wieder eine Zeile zu schreiben.
kurtelic
User
Beiträge: 8
Registriert: Dienstag 9. März 2010, 14:29

Montag 15. März 2010, 23:11

Könnten wir es dann so machen.
Vergessen wir alles was ich oben geschrieben habe.
Sagen wir mal, ihr bekommt ein .csv Datei mit o.g. Struktur.
Ihr wollt ein Excel Datei bilden mit der 1. Reihe Überschrift und darunter die Messwerten.
Wie würde der Quellcode aussehen?
Benutzeravatar
cofi
Moderator
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Dienstag 16. März 2010, 00:17

Nur um das klarzustellen: Meinst du eine CSV, oder eine Excel-Datei?
kurtelic
User
Beiträge: 8
Registriert: Dienstag 9. März 2010, 14:29

Dienstag 16. März 2010, 00:39

Input:CSV
Output:XLS

:D
ms4py
User
Beiträge: 1178
Registriert: Montag 19. Januar 2009, 09:37

Dienstag 16. März 2010, 11:39

kurtelic hat geschrieben:Könnten wir es dann so machen.
Vergessen wir alles was ich oben geschrieben habe.
Sagen wir mal, ihr bekommt ein .csv Datei mit o.g. Struktur.
Ihr wollt ein Excel Datei bilden mit der 1. Reihe Überschrift und darunter die Messwerten.
Wie würde der Quellcode aussehen?
Das ist wohl echt eine Frechheit! Du klatschst uns hier fast 1:1 den Quelltext aus einem Tutorial hin ( http://www.casa-rock.de/2008/09/30/pyth ... er-freund/ ), behauptest die python-excel.pdf *komplett* durchgearbeitet zu haben ohne dass in deinen Quelltexten auch nur der geringste Ansatz davon zu finden ist und stellst dann so eine Anfrage.
Vermutlich verstehst du keine einzige Zeile von dem hier gezeigten Code!

Ich verweise hier noch einmal ganz deutlich auf http://www.python-forum.de/topic-1689.html und werde Anfragen von dir in Zukunft ignorieren...
„Lieber von den Richtigen kritisiert als von den Falschen gelobt werden.“
Gerhard Kocher

http://ms4py.org/
Antworten