Я использую openpyxl для работы с .xlsx
файлами в Python
.
У меня есть файл sample.xlsx
, из которого я хочу получить список полей заголовков и ширину столбцов для использования вфайл, сгенерированный моим сценарием.
Сначала я создаю список с именами столбцов и соответствующими им значениями ширины.Поэтому я использую:
filter_list = {"name": [], "width": []}
row_count = sheet.max_row
for i in range(row_count):
cell = sheet.cell(row, i + 1)
if cell.value:
filter_list["name"].append(cell.value)
filter_list["width"].append(sheet.column_dimensions
[cell.column].width)
значение, чтобы получить ширину столбца, а затем я устанавливаю то же значение:
if filter_list["width"][i] is not None:
sheet.column_dimensions[cell.column].width = filter_list["width"][i]
Это прекрасно работает, если конкретный столбец имеет значение не по умолчанию (т.е.не нет).Когда я открываю выходной файл (как на Mac, так и на Windows), я вижу, что ширина этого конкретного столбца одинакова для обоих файлов.
Но если один из столбцов имеет ... width = None
во входном файле (таким образом, выходной файл имеет то же значение None
для параметра ширины столбца), тот же столбец в выходном файле выглядит по-разному.
Любые идеи о том, почему это происходит?
Похоже, где-то в .xlsx
есть параметр, который каким-то образом определяет, какой ширине по умолчанию (= None value) присвоено значение.
Есть ли способ заставить оба файла выглядеть одинаково с точки зренияширина столбца?
Обновление: Я добавил проверку для значения ширины None
.Я устанавливаю параметр ширины столбца только для столбцов, которые не имеют значения None
.Результат остается тем же - файлы различаются по ширине по умолчанию.
Обновление 2: Я обновил код, чтобы показать, как именно я читаю и установить ширину столбца.