Вы должны почти всегда запускать сетевые операции в потоке или как асинхронную задачу.
Но это является возможным для удаления этого ограничения, и вы переопределяете поведение по умолчанию, если вы готовы принять последствия.
Добавить:
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
В вашем классе
и
ДОБАВЛЯЕТ это разрешение в android Файл manifest.xml:
Последствия:
Ваше приложение (в зонах пятнистого интернет-соединения) перестает отвечать на запросы и блокируется, пользователь воспринимает медленность и должен делать force kill, и вы рискуете, что менеджер активности убил ваше приложение и сказал пользователю, что приложение остановилось.
У Android есть несколько хороших советов по хорошему программированию для разработки для реагирования: http: // developer.android.com/reference/android/os/NetworkOnMainThreadException.html
Из кода видно, что вы используете оптимизированный считыватель: read_only=True
. Вы можете переключаться между извлечением формулы и ее результатом с помощью флага data_only=True
при открытии книги.
internal_value
был частным атрибутом, который использовался только для обозначения (нетипизированного) значения, которое использует Excel, т.е. числа с эпохой в 1900 году для дат в отличие от формы Питона. Он был удален из библиотеки, так как этот вопрос был впервые задан.
Вы можете попробовать следующий код. Просто укажите путь к файлу excel и местоположение ячейки, значение которой вам нужно в терминах номера строки и номера столбца ниже в коде ниже.
from openpyxl import Workbook
wb = Workbook()
Dest_filename = 'excel_file_path'
ws=wb.active
print(ws.cell(row=row_number, column=column_number).value)
Как Чарли Кларк уже предлагает вам установить data_only
на True
при загрузке вашей книги:
from openpyxl import load_workbook
wb = load_workbook("file.xlsx", data_only=True)
sh = wb["Sheet_name"]
print(sh["x10"].value)
Удачи:)
Вместо этого используйте cell.internal_value
.