Skip to main content

Universal data converter between JSON, JSONL, CSV and XLSX formats

Project description

RV Converter (v2026.02.15.2)

Универсальный конвертер данных между форматами JSON, JSONL, CSV и XLSX.

Возможности

  • Конвертация между JSON, JSONL, CSV и XLSX
  • Обратная конвертация: XLSX/CSV → JSON/JSONL
  • Автоматическое разбиение больших данных на листы (лимиты Excel)
  • Сортировка и фильтрация данных
  • Подсчёт заполненных ячеек в каждой колонке
  • Автофильтры и закреплённые заголовки
  • Поддержка метаданных Excel-файла
  • Локализация интерфейса (русский/английский)
  • Потоковая обработка больших JSON (с ijson)

Установка

pip install rv-converter

Установка из исходников

git clone https://github.com/ruvn-1fgas/rv-converter.git
cd rv-converter
pip install .

Или

pip install git+https://github.com/ruvn-1fgas/rv-converter.git

Для потоковой обработки больших JSON-файлов:

pip install ijson

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

Командная строка

rv_converter data.json                       # output: data.xlsx
rv_converter data.json -o output.xlsx        # указать имя выходного файла
rv_converter data.json -s name               # сортировка по ключу "name"
rv_converter data.json -s name -o out.xlsx   # сортировка + имя файла
rv_converter data.json -j "; "               # разделитель для списков
rv_converter data.json -t csv                # вывод в CSV
rv_converter data.xlsx -t json               # XLSX → JSON
rv_converter data.csv -t xlsx                # CSV → XLSX
rv_converter data.xlsx -t jsonl              # XLSX → JSONL
rv_converter data.json --sort-by name --output result.xlsx  # полные имена

Опции:

  • -o, --output — имя выходного файла
  • -s, --sort-by — ключ для сортировки
  • -j, --join — разделитель для множественных значений
  • -t, --type — формат выходного файла (xlsx, csv, json, jsonl; по умолчанию: xlsx)

Python API

from rv_converter import converter

data = [
    {"name": "Alice", "age": 30},
    {"name": "Bob", "age": 25},
]

# Базовое использование
converter.save_file(data, "output.xlsx")

# С сортировкой по ключу
converter.save_file(data, "output.xlsx", sort_by="name")

# С сортировкой по нескольким ключам
converter.save_file(data, "output.xlsx", sort_by=["age", "name"])

# С пользовательской сортировкой
converter.save_file(data, "output.xlsx", sort_by=lambda x: x["name"].lower())

# С фильтрацией
converter.save_file(
    data, 
    "output.xlsx", 
    filter_function=lambda x: x["age"] > 25
)

# С метаданными файла
converter.save_file(
    data,
    "output.xlsx",
    xlsx_metadata={"title": "Отчёт", "creator": "RV Converter"}
)

# Сохранение в CSV
converter.save_file(data, "output.csv", type="csv")

# Сохранение в JSON
converter.save_file(data, "output.json", type="json")

# Сохранение в JSONL
converter.save_file(data, "output.jsonl", type="jsonl")

Конвертация между форматами

from rv_converter import converter

# XLSX -> JSON
converter.convert_file("data.xlsx", "data.json")

# CSV -> XLSX
converter.convert_file("data.csv", "data.xlsx")

# JSON -> CSV
converter.convert_file("data.json", "data.csv")

# XLSX -> JSONL
converter.convert_file("data.xlsx", "data.jsonl")

Загрузка данных из файла

from rv_converter import converter
from rv_converter.utils import load_data

data = load_data("input.json")   # или input.jsonl / input.csv / input.xlsx
converter.save_file(data, "output.xlsx")

API

converter.save_file()

Параметр Тип Описание
data List[Dict] Список словарей для записи
filename str Путь к выходному файлу
sort_by str | List[str] | Callable Ключ, список ключей или функция сортировки
filter_function Callable[[Dict], bool] Функция фильтрации
join_multivalued str Разделитель для списков (по умолчанию: ", ")
type str Формат файла ("xlsx", "csv", "json", "jsonl")
xlsx_metadata Dict[str, Any] Метаданные Excel (title, creator, etc.)

converter.convert_file()

Параметр Тип Описание
input_file str Путь ко входному файлу (json/jsonl/csv/xlsx)
output_file str Путь к выходному файлу (json/jsonl/csv/xlsx)
sort_by str | List[str] | Callable Ключ, список ключей или функция сортировки
filter_function Callable[[Dict], bool] Функция фильтрации
join_multivalued str Разделитель для списков (по умолчанию: ", ")
xlsx_metadata Dict[str, Any] Метаданные Excel (title, creator, etc.)

Основные зависимости

Название Ссылка
Python >= 3.11 Ссылка
openpyxl Ссылка
pandas Ссылка
tqdm Ссылка

Лицензия

MIT

Changelog

v2026.02.15.3

  • Оптимизация:
    • write_only на Workbook
    • Удаление обработанных чанков с данными

v2026.02.15.2

  • Добавлена поддержка CSV (чтение и запись)
  • Добавлена обратная конвертация XLSX/CSV → JSON/JSONL
  • Добавлен метод convert_file() для конвертации между любыми форматами
  • Расширен CLI: поддержка входных форматов CSV/XLSX и выходных json/jsonl/csv/xlsx

v2026.02.15.1

  • Заменены статичные числа в строке итогов на формулы SUBTOTAL (подсчёт автоматически обновляется при фильтрации)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

rv_converter-2026.2.15.3.tar.gz (13.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

rv_converter-2026.2.15.3-py3-none-any.whl (13.6 kB view details)

Uploaded Python 3

File details

Details for the file rv_converter-2026.2.15.3.tar.gz.

File metadata

  • Download URL: rv_converter-2026.2.15.3.tar.gz
  • Upload date:
  • Size: 13.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.12

File hashes

Hashes for rv_converter-2026.2.15.3.tar.gz
Algorithm Hash digest
SHA256 143bd870463be3fe769d758352dac87a9285bf2c2012df221724e928c9a07209
MD5 e429b94c4d5831efe9fcb2f8c508a7e0
BLAKE2b-256 2ed0162b1d1f39277aa1413d58bca1f17c00d07d941a980a4681e7adea1a02c9

See more details on using hashes here.

File details

Details for the file rv_converter-2026.2.15.3-py3-none-any.whl.

File metadata

File hashes

Hashes for rv_converter-2026.2.15.3-py3-none-any.whl
Algorithm Hash digest
SHA256 3b9b49fb8a47d2b58adf0302cf3e72d8b2140665b5bb53f9e536b03fbc46166f
MD5 9287516c3d05e6fecfd5a73fde5b532a
BLAKE2b-256 7b43d5685bb32a9d4a7ca4333910c112f70b19b9172e50836f9bd44becb09f8c

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page