Spaltenbreite bei Excel-Datei

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.
Antworten
blubber
User
Beiträge: 123
Registriert: Montag 19. März 2007, 09:08

Dienstag 26. Februar 2008, 09:15

Guten Morgen,

ich hab ein Python Script geschrieben, welches mir ein Excel-Protokoll erstellt, was auch ohne Probleme funktioniert.
Allerdings ist es nun so, dass die Spaltenbreite sich nicht dem Inhalt einer Zelle anpasst, sondern alle Spalten bleiben auf den Standardwert und man muss dann von Hand die Spaltenbreiten anpassen....was natürlich unschön ist.
Kann mir jemand sagen, wie bzw. ob das überhaupt funktioniert?

Gruß

*EDIT*
Ok, ich weis mitlerweile, dass man mit .ColumnWidth=20 die Spaltenbreite z.B. auf den festen Wert 20 setzen kann. Aber wie kann ich quasi sagen ColumnWidth=AUTOBREITE, also dass er es dem längsten Inhalt einer Zelle anpasst?
BlackJack

Dienstag 26. Februar 2008, 10:05

Gibt es so eine Einstellung denn in Excel selbst?
blubber
User
Beiträge: 123
Registriert: Montag 19. März 2007, 09:08

Dienstag 26. Februar 2008, 10:07

Hi BlackJack,

also man kann ja in Excel zwischen zwei Spalten einen Doppelklick machen, also z.B. zwischen der A und B - Spalte, dann wird automatisch die Spaltenbreite angepasst....

Oder auch unter Format...Spalte...Optimale Breite festlegen
Dafür müssen halt Spalten markiert werden.
blubber
User
Beiträge: 123
Registriert: Montag 19. März 2007, 09:08

Dienstag 26. Februar 2008, 10:13

Man müsste quasi einfach alle Zeilen markieren...

Worksheet.Cells.Select ??

Und danach ein Kommando vom Menü oben ausführen. Geht das?
Benutzeravatar
HWK
User
Beiträge: 1295
Registriert: Mittwoch 7. Juni 2006, 20:44

Dienstag 26. Februar 2008, 12:19

So würde die Breite für die Spalten A bis C optimal eingestellt:

Code: Alles auswählen

Columns("A:C").Select
Selection.Columns.AutoFit
MfG
HWK
blubber
User
Beiträge: 123
Registriert: Montag 19. März 2007, 09:08

Dienstag 26. Februar 2008, 12:43

Hallo HWK,

das funkioniert leider noch nicht so ganz.

Also "worksheet" ist zum Beispiel mein aktuelles excel-Blatt.
Muss es dann so heissen:

Code: Alles auswählen

worksheet.Columns("A:C").Select
worksheet.Selection.Columns.AutoFit
?? Das hab ich probiert, geht aber nciht...
Benutzeravatar
HWK
User
Beiträge: 1295
Registriert: Mittwoch 7. Juni 2006, 20:44

Dienstag 26. Februar 2008, 13:14

So vielleicht? In Tabelle1 von Mappe1 Spalten A bis C optimieren:

Code: Alles auswählen

Windows("Mappe1").Activate
Sheets("Tabelle1").Select
Columns("A:C").Select
Selection.Columns.AutoFit
Hierbei handelt es sich aber um VBA-Code. Für den Zugriff über die COM-Schnittstelle aus Python musst Du den Code entsprechend anpassen. Ein Beispiel dafür findest Du z.B. hier: http://www.python-forum.de/topic-10798.html
blubber
User
Beiträge: 123
Registriert: Montag 19. März 2007, 09:08

Dienstag 26. Februar 2008, 13:23

Hmm...bin aus dem Thread leider auch net schlauer geworden :cry:
Kann doch net sein, dass das so kompliziert ist, bzw. net gescheit geht....ist doch Python !? :(
Benutzeravatar
HWK
User
Beiträge: 1295
Registriert: Mittwoch 7. Juni 2006, 20:44

Dienstag 26. Februar 2008, 13:36

So müsste es gehen:

Code: Alles auswählen

#!/usr/bin/env python
# -*- coding: iso-8859-1 -*-

import os
import win32com.client

excel_app = win32com.client.dynamic.Dispatch('Excel.Application')
excel_workbook = excel_app.Workbooks.Open(os.path.abspath('Mappe1.xls'))
excel_sheet = excel_workbook.Worksheets('Tabelle1')
excel_sheet.Columns('A:C').AutoFit()
del excel_sheet
excel_workbook.Close()
del excel_workbook
excel_app.Quit()
del excel_app
Das ist jetzt Python-Code, wie man sieht.
MfG
HWK
blubber
User
Beiträge: 123
Registriert: Montag 19. März 2007, 09:08

Dienstag 26. Februar 2008, 13:51

Hi,

gerade habe ich auch eine Lösung gefunden und es nun so realisiert:

Code: Alles auswählen

worksheet.Columns("A:ZZ").EntireColumn.AutoFit()
Vielen Dank für die Bemühungen.

Gruß
Antworten