Как загрузить электронную таблицу в Python
Это руководство показывает, как загрузить файлы электронных таблиц XLSX и CSV в Python с помощью Workbook, получить доступ к листам с помощью get_worksheet() и считывать значения ячеек через сетку Worksheet.cells. Библиотека работает в чистом Python без Microsoft Office или нативных расширений.
Пошаговое руководство
Шаг 1: Установите пакет
Установите FOSS-пакет Aspose.Cells из PyPI, используя команду pip ниже:
pip install aspose-cells-fossПроверьте установку, импортировав Workbook и выведя сообщение подтверждения:
from aspose.cells_foss import Workbook
print("aspose-cells-foss is ready.")Шаг 2: Импортировать необходимые классы
Импортируйте класс Workbook из aspose.cells_foss, чтобы получить доступ к загрузке таблицы API:
from aspose.cells_foss import WorkbookШаг 3: Загрузить книгу из файла
Передайте строку пути к файлу в Workbook(), чтобы загрузить существующую таблицу. Конструктор принимает необязательный аргумент password для защищённых файлов:
from aspose.cells_foss import Workbook
wb = Workbook("report.xlsx")
print("Loaded:", wb.file_path)Шаг 4: Доступ к листу
Используйте get_worksheet() с целочисленным индексом (нумерация с нуля) или строкой имени листа. Используйте свойство worksheets, чтобы увидеть, сколько листов содержит книга:
from aspose.cells_foss import Workbook
wb = Workbook("report.xlsx")
# By index
ws = wb.get_worksheet(0)
# By name
ws_named = wb.get_worksheet("Summary")
print(f"Worksheets: {len(wb.worksheets)}")
print(f"First sheet: {ws.name}")Шаг 5: Чтение значений ячеек
Получайте доступ к ячейкам через свойство Worksheet.cells. Используйте Cells.cell(row, col), чтобы получить Cell по её координатам строки и столбца с нулевой основанием. Читайте данные с помощью свойства Cell.value. Используйте Cell.is_empty(), чтобы безопасно пропускать пустые ячейки:
from aspose.cells_foss import Workbook
wb = Workbook("report.xlsx")
ws = wb.get_worksheet(0)
cells = ws.cells
# Read individual cells
product = cells.cell(0, 0).value # row 0, col 0 (A1)
revenue = cells.cell(0, 1).value # row 0, col 1 (B1)
print(f"Product: {product}")
print(f"Revenue: {revenue}")
# Safe read with empty check
cell = cells.cell(1, 0)
if not cell.is_empty():
print(f"A2: {cell.value}")Шаг 6: Перебрать все строки
Используйте Cells.iter_rows(), чтобы пройти по всем строкам, не зная размеров. Передайте values_only=True, чтобы получать простые значения Python вместо объектов Cell:
from aspose.cells_foss import Workbook
wb = Workbook("report.xlsx")
ws = wb.get_worksheet(0)
for row in ws.cells.iter_rows(0, None, 0, None, values_only=True):
print(row)Распространённые проблемы и решения
FileNotFoundError при загрузке Проверьте, что путь правильный и файл существует. Используйте pathlib.Path для переносимых путей: Workbook(str(Path("data") / "report.xlsx")).
Cell.value returns None Ячейка пуста или находится за пределами диапазона. Используйте Cell.is_empty() для проверки перед чтением value. Координаты за пределами диапазона не вызывают ошибок — они возвращают пустые ячейки.
Файл, защищённый паролем, вызывает ошибку Передайте пароль в качестве второго аргумента: Workbook("protected.xlsx", "secret").
Загрузка происходит только первого листа при чтении CSV Файлы CSV содержат один лист. Используйте Workbook.load_csv(file_path) на существующем Workbook экземпляре, если вам нужно импортировать данные CSV в конкретную позицию листа, а не читать через Workbook() конструктор напрямую.
Имя листа не найдено с get_worksheet(name) Имена листов чувствительны к регистру. Выведите ws.name для каждого индекса в wb.worksheets чтобы подтвердить точное имя перед вызовом get_worksheet("Name").
Часто задаваемые вопросы
Работает ли это на Linux и macOS?
Да. aspose-cells-foss — это чистый Python и работает на Windows, macOS, Linux и в Docker-контейнерах без каких-либо нативных расширений или системных зависимостей.
Какие форматы файлов я могу загрузить?
Конструктор Workbook() поддерживает файлы XLSX. Файлы CSV можно загрузить, передав путь .csv или вызвав Workbook.load_csv(file_path) у экземпляра Workbook.
Как найти последнюю строку с данными?
Итерируйте с помощью Cells.iter_rows() и останавливайтесь, когда все значения в строке равны None, либо используйте Cell.is_empty() на граничных ячейках, чтобы определить, где заканчиваются данные.
Могу ли я открыть книгу без предварительного знания её формата?
Передайте путь к файлу в Workbook(file_path). Библиотека определяет формат по расширению файла и заголовкам. Если расширение отсутствует или неоднозначно, используйте явный параметр формата сохранения/загрузки.
Как прочитать ячейку по её буквенной адресе, например “B3”?
Используйте нулевые индексы для строк и столбцов: B3 — это строка 2, столбец 1. Преобразуйте буквенные адреса с помощью ord(col_letter) - ord("A") для односимвольных столбцов. Например, B равно ord("B") - ord("A") == 1, поэтому cells.cell(2, 1) соответствует B3.