Hallo, aus Matlab erhalte ich (Mess-)Daten im csv-Format. Ich möchte daraus nun formatierte Tabellen erstellen und als pdf speichern. Dabei möchte ich eine definierte Seitengröße, Schriftgröße, Seitenränder, Spaltenbreite und Zelleneigenschaften (Umrandung, Zeilenumbruch) haben. Ich muss ich das regelmäßig mit vielen csv-Datensätzen durchführen. Die Formatierung soll immer die selbe sein - ich möchte aber nicht immer alles neu einstellen. Ich brauche eine automatisierte Lösung. Formatvorlagen in Excel oder OpenOffice Calc verstehe ich nicht wirklich. Sie sind scheinbar nur im aktiven Dokument verfügbar, lassen sich nicht als Datei speichern... Wirklich intuitiv ist die Bedienung auch nicht. Hat da jemand einen Tipp? Danke! Hannes
Excel und Calc dürften über einen Macrorecorder verfügen, mit dem Du Deine Formatierungsschritte anhand einer Musterdatei aufzeichen und bei weiteren Dateien in Zukunft wieder abspielen kannst.
Ich empfehl die Speicherung als html, da kriegt man die Daten auch wieder raus, was bei pdf nicht trivial ist. Falls es trotzdem pdf sein muss .. ein txt erzeugen und als pdf drucken. Dh der pdf-konverter ist ein Druckertreiber.
Eine weitere Möglichkeit wäre mit Latex. Ein Script für das übertragen der Daten in den Code mit anschließendem compilieren. Wäre im Prinzip nur ein Klick. Könnte man wahrscheinlich auch direkt aus MATLAB erzeugen.
@Rufus: Den Makrorekorder habe ich gefunden und ausprobiert. Hat leider nicht zum Ziel geführt. Alle Eigenschaften des Textes (Schriftgröße, Schriftart) wurden angepasst. Nicht aber die Eigenschaften der Zellen (Breite, Umrandung) und die der Seite (Seitenränder). Habe mir den Code des Makros mal angesehen. Habe ich leider keine Ahnung von.. @Blechtroll: Den Tipp verstehe ich nicht ganz. Ich will die Daten archivieren, sondern optisch aufbereiten. Die Rohdaten bleiben ja erhalten.
BB84 schrieb: > Eine weitere Möglichkeit wäre mit Latex. Ein Script für das übertragen > der Daten in den Code mit anschließendem compilieren. Wäre im Prinzip > nur ein Klick. > Könnte man wahrscheinlich auch direkt aus MATLAB erzeugen. Interessant!
>@Blechtroll:
Den Tipp verstehe ich nicht ganz. Ich will die Daten archivieren,
sondern optisch aufbereiten. Die Rohdaten bleiben ja erhalten.
Dann muss ein Graph her, eher keine Tabelle.
Hannes schrieb: > Nicht aber die Eigenschaften der Zellen (Breite, Umrandung) und die der > Seite (Seitenränder). Das kann der Makrorekorder auch. Ich nutze den, wenn ich mal auf die Schnelle die passende Funktion nicht finde. Habe schon etliche Konvertierungsmakros mit Berichtsfunktionen geschrieben.
Ich würde Python dafür nehmen. Als PDF-Writer bietet sich da Reportlab an. Wenn du willst kannst du deine Messdaten auch noch direkt mit Matplotlib visualisieren und mit ins PDF packen.
Hannes schrieb: > Ich möchte daraus nun formatierte Tabellen erstellen und als pdf > speichern. Dabei möchte ich eine definierte Seitengröße, Schriftgröße, > Seitenränder, Spaltenbreite und Zelleneigenschaften (Umrandung, > Zeilenumbruch) haben. Du könntest deine Daten in eine Datenbank (z.B. MSAccess oder was du hast) schieben und sie über einen Report, den du nach deinen Wünschen einmal formatiert anlegst, über einen PDF-Drucker ausgeben. Dann hast du alle Freiheit bei der Formatierung und mußt das nur einmal anlegen.
@Blechtroll: Es sind nicht nur Zahlenwerte in den Daten, sondern auch Strings. Die Vorschläge von Wolfgang und der Makrorecorder gehen schon in die Richtige Richtung. Mit Tex habe ich Erfahrung, das probiere ich heute mal. Aber auch Reportlab schaue ich mir mal an, das sieht wirklich gut aus und wenn man es mal für sich eingerichtet hat, lässt es sich sicher auch vielseitig einsetzen. Danke Leute!
Innerhalb gewisser (und leider sehr enger) Grenzen kann man Excel auch dazu bringen, csv-Dateien (wobei das "c" bei deutschem Excel gelogen ist, es ist schließlich ein Semikolon) nicht ganz stupide zu interpretieren. Dinge, die als Text verarbeitet werden sollen (wie z.B. Telephonnummern, die nicht besser werden, wenn man die führenden Nullen unterschlägt), sollten in Anführungszeichen gesetzt werden: bla;1234;001234;"001234";sülz Auch wenn das Trennzeichen in einem Text enthalten sein soll, sind Anführungszeichen zu verwenden: bla;1234;001234;"001;234";sülz
Ich habe das mit Reportlab rein interessehalber mal selber probiert. Das Python-Script ist völlig überkommentiert aber ich weiß nicht wie viel Ahnung du von Python hast. Wenn man es auf reinen Python-Code reduziert bleibt jedenfalls nicht mehr viel übrig. Das Skript ist natürlich alles andere als schön, weil alles relativ statisch ist, wie z.B. Dateinamen. Jedenfalls liefert das Skript, wenn man die CSV-Datei 5.2.9.dat und 5.2.9.png im gleichen Verzeichnis wie das Skript hat, die datei 5.2.9.pdf. Die Ausgabe finde ich schon ganz ok, wenn auch noch stark verbesserungsbedürftig, vor allem bezüglich der Nachkommastellen. Hier würde sich vermutlich der Umweg über ein Numpy-Float-Array lohnen, aus dem man dann die benötigte Stringliste erzeugt, wobei man dann z.B. mit "%.2f" die Nachkommastellen angeben kann. Auch der Header der CSV fehlt komplett und ein bisschen Platz zwischen Diagramm und Tabelle könnte auch sein. Da hatte ich jetzt keine Lust mehr das noch zu implementieren. Das Diagramm 5.2.9.png ist übrigens auch mit Python aus der CSV erstellt, allerdings ist der Sourcecode nicht im Skript enthalten. Für das Skript wird nichts benötigt außer Reportlab selber. Ich habe es nur mit Python3 getestet und Reportlab über PIP installiert. Wenn du Windows nutzt, dann ist es vermutlich am einfachsten eine Distribution wie z.B. Anaconda zu nutzen, da dort ein vernünftiger Paketmanager mitgeliefert wird und du auch PIP nutzen kannst. Ansonsten wird das unter Windows schon zum Krampf nur die Library zu installieren. Falls du mit Python allgemein noch nichts gemacht hast, dann wird das für dich am Anfang sicher eine Weile Einarbeitungszeit brauchen (war jedenfalls bei mir so). Ich finde allerdings, dass sich das lohnt weil man damit extrem flexibel ist. Auch Numpy oder Matplotlib sind meiner Meinung nach definitiv einen Blick wert.
Wow! Danke! Ich habe ein paar einfache Python Skripte auf meinem Raspberry programmiert und dabei auch PIP genutzt. Ist aber eine andere Baustelle. Aber das sind ja wirklich nur ein paar Zeilen Code. Cool. Ich werds probieren. Danke für die Mühe Christopher!
Nix zu danken. Hat mich halt selber mal interessiert, da ich in einem anderen Zusammenhang schonmal über Reportlab gestolpert bin, es aber noch nie getestet hatte. Wünsche dir frohes gelingen damit.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.