#python #python-3.x #openpyxl
Вопрос:
Версия Python: 3.6
Библиотека Python:
openpyxl Версия Excel: 365
Это вернет значения из каждой ячейки в 255 столбцах верхней строки файла Excel. Я поместил 255 только как временное место для остановки:
for row in ws.iter_rows(min_row=1, max_col=255, max_row=1, values_only=True):
print(row)
Я не знаю, сколько столбцов с данными будет в каждой книге. Все ячейки верхней строки, содержащие данные, будут последовательно перечислены, начиная с столбца 1.
При обнаружении ячейки верхней строки без данных все оставшиеся столбцы/строки будут пустыми.
Мне нужны значения тех последовательных верхних строк, которые содержат значения.
Спасибо, что уделили мне время.
Комментарии:
1. Просто просмотрите результирующий кортеж с помощью перечислителя и остановитесь на первом
None
2. Спасибо за совет, @CharlieClark. Я обновлю свои выводы, но если вы хотите опубликовать ответ, я его приму.
Ответ №1:
@CharlieClark указал мне правильное направление. Что-то вроде этого сработало для меня. Мне все еще нужно было сохранить max_col=255, хотя, иначе произошла бы ошибка.
def column_get():
i = 1
for row in ws.iter_rows(min_row=1, max_col=255, max_row=1, values_only=True):
for x in row:
if row[i] is not None:
print(row[i])
i = 1
else:
break
Ответ №2:
Если я вас правильно понимаю, вы можете просто удалить значение max_col. затем он печатает значения первой строки до тех пор, пока не появится пустая ячейка. попробуйте это:
for row in ws.iter_rows(min_row=1, max_row=1, values_only=True):
print(row)
Если вы все еще видите много значений «Нет», проверьте, не содержит ли первая строка листа какое-либо значение, ошибочно введенное как «Нет». Я бы посоветовал вам отладить его следующим образом: создайте новый пустой лист и вставьте вручную тестовые данные — посмотрите, работает ли это. если это произойдет, скопируйте и вставьте вручную данные с фактического листа в тестовый.
Комментарии:
1. Да, вы могли бы так подумать, но после этого я получил 487 записей «Нет».
2. @ArkhamAngel странно. Я просто попробовал, прежде чем ответить, и это сработало. Я попробовал это на Python 3.8.1 openpyxl 3.0.7
3. @ArkhamAngel Вы уверены, что первая строка вашего листа не содержит никакого значения, ошибочно введенного как Нет? Я бы посоветовал вам отладить его следующим образом: создайте новый пустой лист и вставьте вручную тестовые данные — посмотрите, работает ли это. если это произойдет, скопируйте и вставьте вручную данные с фактического листа в тестовый
4. Я попробую это и, надеюсь, не забуду вернуться и обновить.
5. Ширина строк во многом зависит от структуры рабочего листа, который хранится в виде разреженной матрицы, но лучше всего думать, что он всегда имеет ширину 16 384 кол. и длину около миллиона строк.