Python xlrd: формат чтения значений каждой ячейкиPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Python xlrd: формат чтения значений каждой ячейки

Сообщение Anonymous »

В настоящее время я работаю над проектом по обработке данных. В данный момент я хочу прочитать файл Excel с расширением «.xls» в свою рабочую область Python. Для Pandas это не большая проблема. Однако я также хочу импортировать формат файла Excel. То есть я хочу прочитать цвет каждого значения в каждой ячейке и то, зачеркнуто ли оно.
Я пробовал разные способы решения этой проблемы. Ниже вы можете увидеть мою последнюю попытку, которая приводит к информации о значении цвета шрифта для всей ячейки и о том, зачеркнута ли ячейка. Но я получаю только одно значение для каждой ячейки, хотя в ячейке много значений, и эти значения можно раскрасить в черный, красный, зеленый... можно раскрасить и можно зачеркнуть или нет.
Я открываю книгу с помощью xlrd. Затем я просматриваю каждую строку и столбец ячеек. Я прочитал шрифт рабочей тетради. Затем сохраняю вstrike_bool и font_color_bool, соответствует ли шрифт разрешенному цвету и зачеркнута ли ячейка. В зависимости от типа значения ячейки я сохраняю его в списке filtered_row с правильным типом данных. Этот список представляет строку файла Excel. Затем я сохраняю отформатированный список значений ячеек строки filtered_row в списке значений столбца filtered_data. Этот список filtered_data затем преобразуется в фрейм данных Pandas df_proper.
Сейчас я получаю для каждой ячейки только одно значение цвета шрифта и одно значение. для вычеркнутой функции. Но мне нужен цвет шрифта для каждого значения в ячейке. То же самое касается вычеркнутых значений в ячейке.
Как просмотреть каждое значение в определенной ячейке и проверить цвет каждого значения в ячейке и то, является ли конкретное значение ячейки вычеркнуто?
Мой код:

Код: Выделить всё

import pandas as pd
import numpy as np
import xlrd
import math

palette = self.get_color_palette(data_path)
workbook = xlrd.open_workbook(data_path, formatting_info=True, on_demand=True)

for sheet_name in sheet_names:
print(f'Read sheet: {sheet_name}')
df_proper = pd.DataFrame()
sheet = workbook.sheet_by_name(sheet_name)

# Iterate through the cells
filtered_data = []
for row in range(sheet.nrows):
filtered_row = []
for col in range(sheet.ncols):
keep_cell = False
cell = sheet.cell(row, col)
xf_index = cell.xf_index
xf = workbook.xf_list[xf_index]
font_index = xf.font_index
font = workbook.font_list[font_index]
strike_bool = False
# Check if cell is struck out
if not font.struck_out:
strike_bool = True
else:
strike_bool= False

font_color_bool = False
# Check if color meets condition
if self.compare_font_color(palette[font.colour_index]):
font_color_bool = True
else:
font_color_bool = False

if font_color_bool and strike_bool:
keep_cell = True

if cell.value == '':
filtered_row.append(math.nan)
elif isinstance(cell.value, (int, float)):
if isinstance(cell.value, float) and cell.value.is_integer():
filtered_row.append(int(cell.value) if keep_cell else None)
elif isinstance(cell.value, float):
filtered_row.append(float(cell.value) if keep_cell else None)
else:
filtered_row.append(int(cell.value) if keep_cell else None)
else:
filtered_row.append(str(cell.value) if keep_cell else None)
filtered_data.append(filtered_row)
# DataFrame aus den gefilterten Daten erstellen
df_proper = pd.DataFrame(filtered_data)
dfs[sheet_name] = []
dfs[sheet_name] = df_proper
workbook.unload_sheet(sheet_name)

Пример:



Столбец A
Столбец B



Этого может быть нет значение
Значение 2


Значение 3
Значение 4



Скрипт должен распознавать это «Это» написано красным, а «не» — первым. вычеркнуто.

Подробнее здесь: https://stackoverflow.com/questions/792 ... ell-values
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как прочитать объединенные ячейки в Excel с Python с использованием библиотеки XLRD?
    Anonymous » » в форуме Python
    0 Ответы
    19 Просмотры
    Последнее сообщение Anonymous
  • Написание/создание листа с использованием xlrd и xlwt в Python
    Anonymous » » в форуме Python
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous
  • Написание/создание рабочего листа с использованием XLRD и XLWT в Python
    Anonymous » » в форуме Python
    0 Ответы
    7 Просмотры
    Последнее сообщение Anonymous
  • Написание/создание рабочего листа с использованием XLRD и XLWT в Python
    Anonymous » » в форуме Python
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous
  • Библиотека xlrd даже после установки не распознается в Spyder
    Anonymous » » в форуме Python
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»