问题描述
我收到一个似乎...错误的错误。因为工作表对象当然具有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()
尝试上面的代码,看看它是否有效。如果未安装,则可能未安装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