Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

DGExcel

Пакет для работы с Excel файлами с модульными зависимостями. Поддерживает как современные (.xlsx), так и старые (.xls) форматы Excel.

Особенности

  • 🚀 Простой API - единый интерфейс для всех форматов Excel
  • 📦 Модульные зависимости - устанавливайте только то, что нужно
  • ⚡ Автоматическое определение формата - по расширению файла
  • 🎨 Поддержка стилей - границы, шрифты, выравнивание
  • 📊 Чтение и запись - полная поддержка операций с Excel файлами
  • 🔄 Обратная совместимость - работа со старыми .xls файлами

Установка

Базовая установка (только .xlsx)

pip install dgexcel

С поддержкой .xls файлов

pip install dgexcel[xls]

Полная установка (все возможности)

pip install dgexcel[full]

Быстрый старт

Создание простого Excel файла

from dgexcel import create_excel

data = [
    {'name': 'John', 'age': 25, 'city': 'New York'},
    {'name': 'Jane', 'age': 30, 'city': 'London'},
    {'name': 'Bob', 'age': 35, 'city': 'Tokyo'}
]

# Создание xlsx файла (по умолчанию)
create_excel(data, 'people.xlsx', header=['Name', 'Age', 'City'])

# Создание xls файла (требует [xls])
create_excel(data, 'people.xls', header=['Name', 'Age', 'City'])

Использование классов ExcelX и Excel

from dgexcel import ExcelX, Excel

# Работа с xlsx файлами
excel_x = ExcelX()
excel_x.create_simple_excel(
    'data.xlsx', 
    [{'product': 'Laptop', 'price': 999}, {'product': 'Mouse', 'price': 25}],
    column_names=['Product', 'Price'],
    worksheet='Products'
)

# Работа с xls файлами (требует [xls])
excel_old = Excel()
excel_old.create_simple_excel(
    'data.xls',
    [{'product': 'Keyboard', 'price': 75}, {'product': 'Monitor', 'price': 200}],
    column_names=['Product', 'Price'],
    worksheet='Products'
)

Чтение Excel файлов

from dgexcel import read_excel

# Чтение xlsx файла
data_xlsx = read_excel('people.xlsx', ['name', 'age', 'city'])
print(data_xlsx)

# Чтение xls файла (требует [xls])
data_xls = read_excel('people.xls', ['name', 'age', 'city'])
print(data_xls)

Расширенное использование

Работа со стилями

from dgexcel import ExcelX, BORDER, FONT

excel = ExcelX()

# Определение стилей
header_style = {
    'bold': True,
    'font': {'size': 12, 'color': 'FFFFFF'},
    'border': BORDER['all'],
    'alignment': {'horizontal': 'center'}
}

cell_style = {
    'border': BORDER['all'],
    'alignment': {'horizontal': 'left'}
}

# Создание файла со стилями
data = [['Laptop', 999], ['Mouse', 25]]
excel.create_simple_excel(
    'styled.xlsx',
    data,
    column_names=['Product', 'Price'],
    styles=[header_style, cell_style]
)

Построчная работа с данными

from dgexcel import ExcelX

excel = ExcelX()
excel.open_file('detailed.xlsx')

# Выбор листа
excel.select_worksheet('Data')

# Добавление данных по ячейкам
excel.add_cell(1, 1, 'Product', {'bold': True})
excel.add_cell(1, 2, 'Price', {'bold': True})

# Добавление строки
excel.add_row(2, ['Laptop', 999])

# Добавление столбца
excel.add_column(3, [25, 75, 150], start_row=2)

# Объединение ячеек
excel.add_merge_cell(5, 1, 5, 3, 'Total', {'bold': True})

# Сохранение файла
excel.save_file()

Настройка размеров ячеек

from dgexcel import ExcelX

excel = ExcelX()
excel.open_file('formatted.xlsx')

# Установка ширины столбцов
excel.set_columns_width([20, 15, 10])

# Установка высоты строк
excel.set_rows_height([25, 20, 20, 20])

# Настройка отдельной ячейки
excel.set_cell_dimension(1, 1, height=30, width=25)

excel.save_file()

API Reference

Основные классы

ExcelX(filename=None)

Класс для работы с .xlsx файлами.

Методы:

  • open_file(filename, rewrite=True) - открытие/создание файла
  • create_simple_excel() - быстрое создание файла
  • add_worksheet(name) - добавление листа
  • select_worksheet(name) - выбор активного листа
  • add_cell(row, col, value, style) - добавление ячейки
  • add_row(row, values, start_col, styles) - добавление строки
  • add_column(col, values, start_row, styles) - добавление столбца
  • read_file() - чтение данных из файла
  • save_file() - сохранение файла

Excel(filename=None)

Класс для работы с .xls файлами (требует [xls]).

Имеет тот же API что и ExcelX.

Утилитные функции

create_excel(data, filename, header, column_width, worksheet, start_row, borders)

Универсальная функция для создания Excel файлов.

read_excel(filename, excel_header, sheet_name, int_columns, date_columns, start_row)

Универсальная функция для чтения Excel файлов.

Константы стилей

BORDER

Словарь с predefined стилями границ:

  • BORDER['none'] - без границ
  • BORDER['all'] - границы со всех сторон
  • BORDER['left'], BORDER['right'], etc. - границы с отдельных сторон

FONT

Настройки шрифтов по умолчанию.

NUMBER_FORMAT

Форматы чисел для дат и времени.

Примеры стилей

# Заголовок таблицы
header_style = {
    'bold': True,
    'border': BORDER['bottom'],
    'alignment': {'horizontal': 'center', 'wrap_text': True}
}

# Ячейка с данными
cell_style = {
    'border': BORDER['all'],
    'alignment': {'horizontal': 'left'}
}

# Числовой формат
number_style = {
    'number_format': '#,##0.00',
    'alignment': {'horizontal': 'right'}
}

# Дата
date_style = {
    'number_format': 'dd.mm.yyyy',
    'alignment': {'horizontal': 'center'}
}

Обработка ошибок

from dgexcel import Excel, ImportError

try:
    excel = Excel()
    excel.create_simple_excel('test.xls', [{'data': 'test'}])
except ImportError as e:
    print("Для работы с .xls файлами установите: pip install dgexcel[xls]")
except Exception as e:
    print(f"Ошибка: {e}")

Миграция с divinegift версии

Если вы использовали предыдущие версии пакета:

# Старый код
from divinegift.excel import create_excel, read_excel

# Новый код
from dgexcel import create_excel, read_excel

# API остается совместимым!

Поддержка

  • Python: 3.10+
  • Форматы: .xlsx, .xls
  • Кодировка: UTF-8

Лицензия

MIT License

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

Changelog

v1.0.0

  • Первый стабильный релиз
  • Поддержка .xlsx и .xls форматов
  • Модульная система зависимостей
  • Полный API для работы с Excel файлами

Metadata

Release files for dgexcel 1.0.0a0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for dgexcel 1.0.0a0
File Size Uploaded Provenance Actions
dgexcel-1.0.0a0.tar.gz 15.6 kB Without provenance Details for dgexcel-1.0.0a0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for dgexcel 1.0.0a0
File Interpreter ABI Platform Actions
dgexcel-1.0.0a0-py3-none-any.whl Python 3 none any Details for dgexcel-1.0.0a0-py3-none-any.whl

Total release size: 31.3 kB

Release files / dgexcel-1.0.0a0.tar.gz

Download URL dgexcel-1.0.0a0.tar.gz
Size 15.6 kB
Tags Source
SHA-256 checksum
How to use checksums
1f08ea3113764b45fa74813156e79c84f20f8ce4566dc191a17f3a48cd4140b8
BLAKE2b-256 checksum
How to use checksums
1cc28161d9e733db4d963f19373a7753777600059fdf3cbf96c8f73a5499acf6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / dgexcel-1.0.0a0-py3-none-any.whl

Download URL dgexcel-1.0.0a0-py3-none-any.whl
Size 15.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
cc5569a5b7762efacb128bdd42587b8fbf74b7da27149ff0291a1dedb4d635a1
BLAKE2b-256 checksum
How to use checksums
3d20d0992f7c4af1b0eff6b77f25e13a1875e14cc4c51b66bc76f990c4d9d795
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Security for dgexcel 1.0.0a0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page