我可以在我的代码中使用openpyxl作为导入.但是,当我尝试执行以下操作时:
from openpyxl.cell import get_column_letter
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
ImportError: cannot import name get_column_letter
Run Code Online (Sandbox Code Playgroud)
我正在使用python 2.7.我用它安装了它easy_install.尝试搜索此问题但找不到与之相关的任何内容.
我已经在工作表中填充了一些数据,并且我正在尝试使列宽度假设最适合,如下所示。基本上是双击列宽调整分隔符时发生的自动调整。
这是我的最小示例,就我对openpyxl文档的理解而言,它应该有效:
import openpyxl
from typing import NoReturn
def columns_best_fit(ws: openpyxl.worksheet.worksheet.Worksheet) -> NoReturn:
"""
Make all columns best fit
"""
column_letters = tuple(openpyxl.utils.get_column_letter(col_number + 1) for col_number in range(ws.max_column))
for column_letter in column_letters:
dim = openpyxl.worksheet.dimensions.ColumnDimension(ws, index=column_letter, bestFit=True, customWidth=True)
ws.column_dimensions[column_letter] = dim
wb = openpyxl.Workbook()
ws = wb.active
ws.append(("Long Column Header 1", "Even Longer Column Header 2"))
ws.append(("some data", "more data"))
columns_best_fit(ws)
wb.save("column_width_test.xlsx")
Run Code Online (Sandbox Code Playgroud)
然而,当我打开生成的文件时,列只是稍微宽一点,但肯定不是最合适的。
新手 - 我有一个Python脚本,根据指定的值调整excel文件的不同列的宽度:
import openpyxl
from string import ascii_uppercase
newFile = "D:\Excel Files\abc.xlsx"
wb = openpyxl.load_workbook(filename = newFile)
worksheet = wb.active
for column in ascii_uppercase:
if (column=='A'):
worksheet.column_dimensions[column].width = 30
elif (column=='B'):
worksheet.column_dimensions[column].width = 40
elif (column=='G'):
worksheet.column_dimensions[column].width = 45
else:
worksheet.column_dimensions[column].width = 15
wb.save(newFile)
Run Code Online (Sandbox Code Playgroud)
是否有任何方法可以将每列的宽度调整到最佳值,而无需为不同的列明确指定(意味着,不使用此" if-elif-elif -......- elif-else " 结构体)?谢谢!