如何使用xlwings调整宽度列

时间:2018-04-23 15:10:37

标签: python excel python-3.x xlwings

我编写了一个函数来保存带有xlwings的工作簿中的数据,我希望适合宽度列

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()

但不起作用。

你知道吗?谢谢!

2 个答案:

答案 0 :(得分:2)

您需要在循环外部使用autofit(),因为它会自动调整每行的列宽。除非最后一行的文本最长,否则无效。

如果要自动调整整个列,可以使用rng.entirecolumn.autofit()或指定范围以包含要自动调整列宽的所有行,例如sht.range("A1:A20").columns.autofit()

答案 1 :(得分:1)

您可以使用以下代码自动调整excel文件中所有列的宽度:

import xlwings as xw

filename = "test.xlsx"
app = xw.App(visible=False)
wb = xw.Book(filename)

for ws in wb.sheets:
    ws.autofit(axis="columns")

wb.save(filename)
app.quit()