AttributeError:“工作表”对象没有属性“ set_column”

问题描述

我收到一个似乎...错误错误。因为工作表对象当然具有set_column()作为函数,所以它在文档中。我可能做了一些愚蠢的操作,例如删除括号。

这是错误

Traceback (most recent call last):
  File "scrubaddresses.py",line 137,in <module>
    run()
  File "scrubaddresses.py",line 118,in run
    format_col_width(worksheet)
  File "scrubaddresses.py",line 24,in auto_format_cell_width
    ws.set_column('B:C',20)
AttributeError: 'Worksheet' object has no attribute 'set_column'

这是我可笑的内容。 Config是一些常量,控制器具有一些辅助功能

from smartystreets_python_sdk import StaticCredentials,exceptions,Batch,ClientBuilder
from smartystreets_python_sdk.us_street import Lookup as StreetLookup
from pathlib import Path
import pandas as pd
import numpy as np
import config
from controller import getExcel,clean

有问题的功能

def format_col_width(ws):
    ws.set_column('B:C',20)
    ws.set_column('D',1)
    ws.set_column('E',20)

要传递的ws来自:

            df1 = df.replace(np.nan,'',regex=True)
            print(df1)

            df1.to_excel(writer,sheet,index = False,engine='xlsxwriter')
            worksheet = writer.sheets[sheet]
            format_col_width(worksheet)

我忘记导入什么了吗? Xlsxwriter已安装。

解决方法

单列范围内有错误。它们应该是D:D而不是D,因为即使它们相同,该方法也需要开始和结束列。

经过修改,代码应该可以正常工作

import pandas as pd

def format_col_width(ws):
    ws.set_column('B:C',20)
    ws.set_column('D:D',1)
    ws.set_column('E:E',20)

df = pd.DataFrame({'Data1': [10,20,30,15,45]})

writer = pd.ExcelWriter('pandas_test.xlsx',engine='xlsxwriter')
df.to_excel(writer,sheet_name='Sheet1')

workbook  = writer.book
worksheet = writer.sheets['Sheet1']

format_col_width(worksheet)

writer.save()

输出: enter image description here

尝试上面的代码,看看它是否有效。如果未安装,则可能未安装XlsxWriter,并且Pandas默认为OpenPyXL。

,

我遇到了同样的问题,以下对我有用:

def format_col_width(ws):
    ws.column_dimensions['B'].width = 20
    ws.column_dimensions['C'].width = 20
    ws.column_dimensions['D'].width = 1
    ws.column_dimensions['E'].width = 20