I wrote a function to save data in a WorkBook with xlwings and I want to fit the width column
class VehicleClass:
def __init__(self, VehClass):
# Vehicles 4 - Vehicle Classes
self.VehClass = [VehClass]
self.VehName = []
self.ScaleFactor = []
def add(self, VehName, ScaleFactor):
self.VehClass*=1
self.VehName.append(VehName)
self.ScaleFactor.append(ScaleFactor)
def save(self):
# Vehicles 4 - Vehicle Classes
sht = wb.sheets['Vehicles 4 - Vehicle Classes']
rng = sht.range("A1").end('down').offset(1, 0)
for i, item in enumerate([self.VehClass, self.VehName, self.ScaleFactor]):
rng.offset(0, i).options(transpose=True).value = item
rng.autofit() # or rng.columns.autofit()
but doesn’t work.
Do you have any idea ? Thank you !
You need to take autofit()
outside of the loop as it will auto fit the column width for each row. Unless the last row has the longest text this won’t work.
If you want to auto fit the entire column you can use rng.entirecolumn.autofit()
or specify your range to include all rows that you want to auto fit the column width such as sht.range("A1:A20").columns.autofit()
Tags: pythonpython