2 / 2 / 1
Регистрация: 15.10.2015
Сообщений: 173

Работа с данными файлов Excel .xlsx. Чтение и вывод данных с использованием модуля openpyxl

17.07.2016, 15:06. Показов 17869. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Пытаюсь освоить работу чтения и записи данных в таблицы Excel, используя Python и его модуль openpyxl. При попытке записи или чтения из файла .xlsx IDLE сообщает, что данные являются текстом:
Python
1
2
3
4
Traceback (most recent call last):
  File "E:\Sys\Program Files\Python 2.7.8\HCM", line 4, in <module>
    ws1['B2']=1
TypeError: list indices must be integers, not str
вот примерный код:
Python
1
2
3
4
import openpyxl
wb = openpyxl.load_workbook(filename='E:/Adjustment factor.xlsx')
ws1=["u'"]
c= ws1['D3']
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
17.07.2016, 15:06
Ответы с готовыми решениями:

Вывод данных с использованием модуля openpyxl из файла с расширением xlsx
Здравствуйте! Пытаюсь освоить работу чтения данных из таблицы Excel, используя Python и его модуль openpyxl. При попытке чтения из файла...

Работа с данными файлов Excel .xlsx.
Здравствуйте! А у меня тоже вопрос по теме, если позволите. При записи питоном каких либо данных в уже существующий экселевский файл, все...

Чтение Excel файлов с openpyxl и xlrd
Моя задача состоит в следующем Я должен в папке с Excel файлами перебрать все их листы и найти ячейку со словом ИТОГО, из соседней ячейки...

9
 Аватар для Zuzik
298 / 256 / 57
Регистрация: 11.06.2012
Сообщений: 1,557
17.07.2016, 17:24
Цитата Сообщение от SKY_SHY Посмотреть сообщение
вот примерный код:
Лучше именно тот, на котором у вас появляется ошибка.
Цитата Сообщение от SKY_SHY Посмотреть сообщение
ws1=["u'"]
создаем переменную список из одного элемента.
Цитата Сообщение от SKY_SHY Посмотреть сообщение
c= ws1['D3']
пытаемся использовать ее как словарь.

Удивляемся, почему у нас ничего не получается.
1
2 / 2 / 1
Регистрация: 15.10.2015
Сообщений: 173
17.07.2016, 18:03  [ТС]
Может и так, но я делал как было в этой статье:
http://www.pvsm.ru/python/66788
Как указано в документации если запустить команду:
Python
1
print wb.get_sheet_names()
то выведется список листов, находящихся в файле или как угодно в книге Excel.
Т.е. у меня в книге лист u' называется "density" как я его вижу при открытии xlsx-файла.
Я к тому что запустив вышеуказанную команду python вывел лист с названием "density" как u'

Вообще это происходит со всеми файлами Excel.
0
 Аватар для Zuzik
298 / 256 / 57
Регистрация: 11.06.2012
Сообщений: 1,557
17.07.2016, 18:10
Повторюсь - именно тот кусок кода в студию, на котором возникает ошибка.
1
2 / 2 / 1
Регистрация: 15.10.2015
Сообщений: 173
17.07.2016, 18:23  [ТС]
А он у меня весь. Вот в ячейке D3 of the Sheet 1 значение - 1. Я хочу его вывести. У меня ошибка что все значения в листе д.б. integer. Формат ячеек в Excel - числовой.

Python
1
2
3
4
5
6
import openpyxl
wb = openpyxl.load_workbook(filename='E:/raz.xlsx')
print (wb.get_sheet_names())
ws1=["u'"]
c= ws1['D3']
print c
Вложения
Тип файла: xlsx raz.xlsx (8.4 Кб, 7 просмотров)
0
 Аватар для Zuzik
298 / 256 / 57
Регистрация: 11.06.2012
Сообщений: 1,557
17.07.2016, 18:26
SKY_SHY, документацию читали ? У вас одна очевидная ошибка - переменные wb и ws1 не связаны вообще.
1
2 / 2 / 1
Регистрация: 15.10.2015
Сообщений: 173
17.07.2016, 18:48  [ТС]
Python
1
2
3
4
5
6
7
import openpyxl
import openpyxl
wb = openpyxl.load_workbook(filename='E:/raz.xlsx')
print (wb.get_sheet_names())
ws1=wb["density"]
c= ws1['D3'].value
print c
Работая с другим файлом, где названия листов уже даны - теперь мне Python говорит, что листа с таким названием не существует. Менял название на другие, сохранив предварительно файл при этом - не помогает. Формат ячеек - числовой.
0
 Аватар для Zuzik
298 / 256 / 57
Регистрация: 11.06.2012
Сообщений: 1,557
17.07.2016, 19:01
Лучший ответ Сообщение было отмечено Marinero как решение

Решение

открыл ваш файлик с сообщения выше.
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
In [1]: import openpyxl
 
In [2]: wb = openpyxl.load_workbook(filename='raz.xlsx')
 
In [3]: wb.get_sheet_names()
Out[3]: ['Лист1', 'Лист2', 'Лист3']
 
In [4]: ws = wb['Лист1']
 
In [5]: ws
Out[5]: <Worksheet "Лист1">
 
In [6]: ws['D3']
Out[6]: <Cell Лист1.D3>
 
In [7]: ws['D3'].val()
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-7-8b0688d35f12> in <module>()
----> 1 ws['D3'].val()
 
AttributeError: 'Cell' object has no attribute 'val'
 
In [8]: ws['D3'].value
Out[8]: 1
0
2 / 2 / 1
Регистрация: 15.10.2015
Сообщений: 173
17.07.2016, 19:32  [ТС]
Правда файл я поменял, и там Лист1 назывался по-другому, но не важно.
Хорошо, тогда я не понимаю, почему у вас печатаются названия листов как они есть, у меня ерунда:
[u'density', u'1morn', u'1daytime', u'1middle', u'1evening', u'2morn', u'2dayt', u'2middle', u'2evening', u'\u041b\u0438\u0441\u04424', u'\u041b\u0438\u0441\u04422']
Предупреждение пользователя:
Data Validation extension is not supported and will be removed
И какое расширение валидации данных не поддерживается и будет удалено, что это значит?
0
 Аватар для Zuzik
298 / 256 / 57
Регистрация: 11.06.2012
Сообщений: 1,557
17.07.2016, 19:37
Цитата Сообщение от SKY_SHY Посмотреть сообщение
Хорошо, тогда я не понимаю, почему у вас печатаются названия листов как они есть, у меня ерунда:
[u'density', u'1morn', u'1daytime', u'1middle', u'1evening', u'2morn', u'2dayt', u'2middle', u'2evening', u'\u041b\u0438\u0441\u04424', u'\u041b\u0438\u0441\u04422']
больная тема под названием питон 2 и юникод. Хотите как есть - преобразовывайте их или используйте 3 питон.
Цитата Сообщение от SKY_SHY Посмотреть сообщение
Предупреждение пользователя:
Data Validation extension is not supported and will be removed
И какое расширение валидации данных не поддерживается и будет удалено, что это значит?
https://openpyxl.readthedocs.i... ation.html
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
17.07.2016, 19:37
Помогаю со студенческими работами здесь

Изменение xlsx файла с использованием библиотеки openpyxl
Доброго времени суток, всем, кто зашел сюда! Недавно я написал бота, который принимает текстовые сообщения и добавляет и их в эксель...

Чтение Файлов с использованием модуля pickle
Всем привет, помогите с Лабороторной: Написать программу, реализующую хранение информации о кредитах (на основе списков и многоуровневых...

Вывод на экран списка имен файлов в каталоге модуля с использованием Spring beans
Здравствуйте, ребята! Я пробую разобраться в принципах работы Spring-a... По заданию нужно реализовать вывод на экран список содержимого...

Чтение с использованием ACE.OLEDB из xlsx
Читаю из xlsx данные с помощью ACE.OLEDB.12.0 OleDbCommand command = new OleDbCommand(commandText, connection); OleDbDataReader...

Работа с данными Excel и вывод результатов на сайт
Исходные данные: Программа написанная на VBA(excel) и модулях Python для инженерных расчетов. Eсть шаблон EXCEL с расчетами. Задача:...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru