Форум программистов
 
Регистрация на форуме тут, о проблемах пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль

Купить рекламу на форуме 15-35 тыс рублей в месяц

Вернуться   Форум программистов > Скриптовые языки программирования > Python
Регистрация

Восстановить пароль
Повторная активизация e-mail

           Online-курс Java с оплатой после трудоустройства. Каждый выпускник получает предложение о работе
           И зарплату на 30% выше ожидаемой, подробнее на сайте академии, ссылка - https://clck.ru/fCqwP

Ответ
 
Опции темы Поиск в этой теме
Старый 16.05.2022, 10:50   #1
zander
Форумчанин
 
Регистрация: 24.01.2009
Сообщений: 113
По умолчанию получить значение из ячейки Excel

Всем привет! Имеется вот такой скрипт

sheets = wb.sheetnames
for sheet in sheets:
print(sheet)

# получаем активный лист
#sheet = wb.active
sheet = wb['List1']
print(sheet['B3'].value)
print(sheet['B2'].value)

Python выдает формулы из ячеек, а как получить именно значение? Пробовал копировать значение в другую ячейку, но тогда значение цепляется только после сохранения книги excel
zander вне форума Ответить с цитированием
Старый 16.05.2022, 14:44   #2
Ципихович Эндрю
Старожил
 
Регистрация: 24.01.2011
Сообщений: 2,642
По умолчанию

вроде как нагуглил, то так:
Код:
import xlsxwriter  # pip install XlsxWriter

# открываем новый файл на запись
workbook = xlsxwriter.Workbook('hello.xlsx')
# создаём там "лист"
worksheet = workbook.add_worksheet()
# в ячейку A1 пишем текст
worksheet.write('A2', 'Hello world...')
# сохраняем и закрываем
workbook.close()
print('Конец')
import xlrd  # pip install xlrd

book = xlrd.open_workbook('hello.xlsx')  # считать файл
sheet = book.sheet_by_index(0)
print(sheet.cell_value(rowx=1, colx=2))  # rowx=0, colx=0 - номер столбца и номер строчки
print('Конец2')
но почему ошибка на строке
Код:
book = xlrd.open_workbook('hello.xlsx')  # считать файл
ошибка:
File "C:\Users\q8902\AppData\Roaming\Pyt hon\Python310\site-packages\xlrd\__init__.py", line 170, in open_workbook
raise XLRDError(FILE_FORMAT_DESCRIPTIONS[file_format]+'; not supported')
xlrd.biffh.XLRDError: Excel xlsx file; not supported
не знаю.........
Ципихович Эндрю вне форума Ответить с цитированием
Старый 31.05.2022, 10:33   #3
AleksandrB00
Пользователь
 
Регистрация: 30.05.2022
Сообщений: 24
По умолчанию

Вы используете модуль xlrd для чтения файла формата .xlsx, данный модуль не работает с файлами такого формата. Вам нужна библиотека openpyxl. xlrd работает с файлами формата .xls (старый формат Excel).
AleksandrB00 вне форума Ответить с цитированием
Старый 31.05.2022, 10:35   #4
Ципихович Эндрю
Старожил
 
Регистрация: 24.01.2011
Сообщений: 2,642
По умолчанию

Цитата:
Сообщение от AleksandrB00 Посмотреть сообщение
Вы используете модуль xlrd для чтения файла формата .xlsx, данный модуль не работает с файлами такого формата. Вам нужна библиотека openpyxl. xlrd работает с файлами формата .xls (старый формат Excel).
мешанина, в том плане, что записать=редактировать пожалуйста, а считать нет
а можно сделать, чтобы было для всех Excel-записать=редактировать и считать? как? спасибо
Ципихович Эндрю вне форума Ответить с цитированием
Старый 31.05.2022, 10:44   #5
AleksandrB00
Пользователь
 
Регистрация: 30.05.2022
Сообщений: 24
По умолчанию

Цитата:
Сообщение от Ципихович Эндрю Посмотреть сообщение
мешанина, в том плане, что записать=редактировать пожалуйста, а считать нет
а можно сделать, чтобы было для всех Excel-записать=редактировать и считать? как? спасибо
Немного не понимаю, опишите подробней. Вам нужно запомнить старое значение ячейки и записать туда новое?
AleksandrB00 вне форума Ответить с цитированием
Старый 31.05.2022, 10:46   #6
Ципихович Эндрю
Старожил
 
Регистрация: 24.01.2011
Сообщений: 2,642
По умолчанию

Цитата:
Сообщение от AleksandrB00 Посмотреть сообщение
Немного не понимаю, опишите подробней. Вам нужно запомнить старое значение ячейки и записать туда новое?
да и для всех экселеевских файлов
Ципихович Эндрю вне форума Ответить с цитированием
Старый 31.05.2022, 11:16   #7
AleksandrB00
Пользователь
 
Регистрация: 30.05.2022
Сообщений: 24
По умолчанию

Можно вот так, в процессе выполнения программы значение ячейки С4 будет храниться в переменной value1 и мы можем записывать туда новое не боясь потерять старое.

Код:
from openpyxl import load_workbook

wb = load_workbook(filename='2.xlsx')
ws = wb['OD матрица']
value1 = ws['C4'].value # Сохраняем значение ячейки в переменную
ws['C4'] = '123456' # Записываем в эту же ячейку новое значение
wb.save(filename='2.xlsx')

Последний раз редактировалось AleksandrB00; 31.05.2022 в 11:21.
AleksandrB00 вне форума Ответить с цитированием
Старый 31.05.2022, 11:37   #8
Ципихович Эндрю
Старожил
 
Регистрация: 24.01.2011
Сообщений: 2,642
По умолчанию

то, что нужно, спасибо
Ципихович Эндрю вне форума Ответить с цитированием
Старый 31.05.2022, 11:48   #9
AleksandrB00
Пользователь
 
Регистрация: 30.05.2022
Сообщений: 24
По умолчанию

Цитата:
Сообщение от Ципихович Эндрю Посмотреть сообщение
то, что нужно, спасибо
Если значений много, то можно создать словарь и обращаться к значениям через него, по-любому есть более красивые и простые методы, но я могу предложить только так.

Код:
from openpyxl import load_workbook, Workbook

wb = load_workbook(filename='2.xlsx')
ws = wb['OD матрица']
value2 = [ws['C4'].value, ws['C5'].value] # Создаём словарь со значениями ячеек С4 и С5
ws['C4'] = '867967596' # Записываем в эту ячейку новое значение
wb.save(filename='2.xlsx')
print(value2[0]) # Выводим первое значение словаря (ячейка С4)
AleksandrB00 вне форума Ответить с цитированием
Старый 31.05.2022, 11:53   #10
Ципихович Эндрю
Старожил
 
Регистрация: 24.01.2011
Сообщений: 2,642
По умолчанию

Цитата:
Сообщение от AleksandrB00 Посмотреть сообщение
по-любому есть более красивые и простые методы
может кто другой предложит, по строке, по столбцу? спасибо
Ципихович Эндрю вне форума Ответить с цитированием
Ответ

           Интенсив по Python: Работа с API и фреймворками 24-26 ИЮНЯ 2022. Знаете Python, но хотите расширить свои навыки?
           Slurm подготовили для вас особенный продукт! Оставить заявку по ссылке - https://slurm.club/3MeqNEk

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как получить значение ячейки gridcontrol (компонент devexpress)? Kot070 Windows Forms 1 12.11.2015 07:36
Как получить значение ячейки в отфильтрованном списке? SkyWay Microsoft Office Excel 11 12.02.2015 20:26
Получить значение ячейки имея ее адрес в виде строки bdfy Microsoft Office Excel 3 07.09.2011 12:05
Получить значение ячейки имея ее адрес в виде строки bdfy Microsoft Office Word 0 06.09.2011 22:09
значение ячейки из Excel в Word klimov0512 Microsoft Office Excel 11 27.08.2010 14:49