Lau*_*ura 17 python excel pandas xlsxwriter
我收到一个似乎...错误的错误。当然,因为工作表对象具有 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'
Run Code Online (Sandbox Code Playgroud)
这是我可笑的进口。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
Run Code Online (Sandbox Code Playgroud)
有问题的函数:
def format_col_width(ws):
ws.set_column('B:C', 20)
ws.set_column('D', 1)
ws.set_column('E', 20)
Run Code Online (Sandbox Code Playgroud)
传递的 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)
Run Code Online (Sandbox Code Playgroud)
我是否忘记导入某些东西?Xlsxwriter 已安装。
小智 17
它给出的理由是:AttributeError: 'Worksheet' object has no attribute 'write'
这是因为您的电脑上尚未安装 xlsxwriter。
您可以使用:
pip install xlsxwriter
Run Code Online (Sandbox Code Playgroud)
它会起作用。
单列范围存在错误。它们应该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, 20, 15, 30, 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()
Run Code Online (Sandbox Code Playgroud)
尝试上面的代码,看看它是否有效。如果没有,则 XlsxWriter 可能未安装,并且 Pandas 默认为 OpenPyXL。