Ham JSON verilerini cilalı XLSX raporlarına dönüştürmek, analiz panoları üzerinde çalışan Python geliştiricileri için sık bir ihtiyaçtır. Aspose.BarCode Cloud SDK for Python bulutta barkod oluşturmayı ve dosya işlemlerini basitleştiren güçlü bir kütüphane sunar. Bu rehberde, SDK’yı kurmaktan barkod görüntüleri üretmeye ve son elektronik tabloyu dışa aktarmaya kadar Python’da JSON’dan XLSX’e dönüşümü öğreneceksiniz. Sonunda, üretim iş yükleri için hazır, yeniden kullanılabilir bir betiğe sahip olacaksınız.

Başlamadan Önce: Önkoşullar ve Kurulum

Bu öğreticiyi takip etmek için şunlara ihtiyacınız var:

  • Makinenizde yüklü Python 3.7 veya daha yeni bir sürüm.
  • Seçtiğiniz bir IDE veya metin düzenleyicisi (VS Code, PyCharm vb.).
  • Client Id ve Client Secret içeren bir Aspose Cloud hesabı.
  • Bulut API çağrıları için internet erişimi.

Gerekli paketleri pip ile yükleyin:

pip install aspose-barcode-cloud openpyxl

SDK’yı resmi sürüm sayfasından indirin, manuel kurulum tercih ediyorsanız: İndir Aspose.BarCode Cloud SDK for Python.

API çağrıları yapmadan önce kimlik bilgilerinizi yapılandırın:

from asposebarcodecloud import Configuration

CLIENT_ID = "YOUR_CLIENT_ID"
CLIENT_SECRET = "YOUR_CLIENT_SECRET"

config = Configuration()
config.host = "https://api.aspose.cloud"
config.api_key["client_id"] = CLIENT_ID
config.api_key["client_secret"] = CLIENT_SECRET

Ortam hazır olduğunda, uygulamaya geçebiliriz.

Adım Adım Oluşturma: Python’da JSON’dan XLSX’e Dönüştürme

Adım 1: Kaynak JSON Dosyasını Yükleyin

Dışa aktarmak istediğiniz verileri içeren JSON dizisini okuyun.

import json

INPUT_JSON_PATH = "input.json"
with open(INPUT_JSON_PATH, "r", encoding="utf-8") as f:
    json_data = json.load(f)   # expects a list of dictionaries

Adım 2: Çalışma Kitabını ve Başlık Satırını Hazırlayın

OpenPyXL ile bir Excel çalışma kitabı oluşturun ve sütun başlıklarını yazın.

from openpyxl import Workbook
from openpyxl.utils import get_column_letter

wb = Workbook()
ws = wb.active
ws.title = "Data"

columns = list(json_data[0].keys())
columns.append("BarcodeImage")          # extra column for the barcode
for col_idx, col_name in enumerate(columns, start=1):
    ws.cell(row=1, column=col_idx, value=col_name)

Adım 3: Barkod Görüntülerini Oluşturun

Her kayıt için bir PNG barkod oluşturmak için Aspose.BarCode Cloud kullanın.
BarcodeApi.generate_barcode için API referansı, API referansı içinde mevcuttur.

from asposebarcodecloud import BarcodeApi, GenerateBarcodeRequest, EncodeBarcodeType, ApiClient
from asposebarcodecloud.rest import ApiException

barcode_api = BarcodeApi(ApiClient(config))

def generate_barcode_image(text: str,
                           barcode_type: EncodeBarcodeType = EncodeBarcodeType.CODE_128) -> bytes:
    request = GenerateBarcodeRequest(text=text, type=barcode_type, format="png")
    try:
        response = barcode_api.generate_barcode(request)
        return response.read()
    except ApiException as e:
        print(f"Error generating barcode for '{text}': {e}")
        raise

Adım 4: Çalışma Sayfasına Barkodları Ekleyin

Aynı barkodları önbelleğe alarak gereksiz API çağrılarını önleyin, ardından görüntüyü gömün.

import io
from openpyxl.drawing.image import Image as XLImage

barcode_cache = {}
for row_idx, record in enumerate(json_data, start=2):
    # write regular fields
    for col_idx, field_name in enumerate(columns[:-1], start=1):
        ws.cell(row=row_idx, column=col_idx, value=record.get(field_name, ""))

# barcode generation / caching
    barcode_source = str(record.get("code", f"row{row_idx}"))
    img_bytes = barcode_cache.get(barcode_source) or generate_barcode_image(barcode_source)
    barcode_cache[barcode_source] = img_bytes

img_stream = io.BytesIO(img_bytes)
    img = XLImage(img_stream)
    img.width, img.height = 150, 50          # optional size adjustment
    img_cell = f"{get_column_letter(len(columns))}{row_idx}"
    ws.add_image(img, img_cell)

Adım 5: Sütunları Otomatik Boyutlandır ve Çalışma Kitabını Kaydet

Dosyayı sonlandırın ve diske yazın.

for col_idx in range(1, len(columns) + 1):
    column_letter = get_column_letter(col_idx)
    ws.column_dimensions[column_letter].width = 20

OUTPUT_XLSX_PATH = "output.xlsx"
wb.save(OUTPUT_XLSX_PATH)
print(f"Conversion complete. XLSX saved to '{OUTPUT_XLSX_PATH}'.")

Bu adımlarla JSON’dan XLSX’e dönüşüm tamamlanır ve her satır artık Aspose.BarCode tarafından oluşturulan bir barkod görüntüsü içerir.

Python’da Tam JSON’dan XLSX Scripti - Tam Kod Örneği

Aşağıdaki örnek, Aspose.BarCode Cloud SDK for Python kullanarak JSON’dan XLSX’e dönüşümün uçtan uca uygulanmasını göstermektedir.

import json
import os
import io
from typing import Dict, Any, List

import asposebarcodecloud
from asposebarcodecloud import (
    BarcodeApi,
    GenerateBarcodeRequest,
    EncodeBarcodeType,
    Configuration,
    ApiClient,
)
from asposebarcodecloud.rest import ApiException

from openpyxl import Workbook
from openpyxl.drawing.image import Image as XLImage
from openpyxl.utils import get_column_letter

# -------------------- Aspose.BarCode Cloud Setup --------------------
# Replace these placeholders with your actual Aspose Cloud credentials.
CLIENT_ID = "YOUR_CLIENT_ID"
CLIENT_SECRET = "YOUR_CLIENT_SECRET"

config = Configuration()
config.host = "https://api.aspose.cloud"
config.api_key["client_id"] = CLIENT_ID
config.api_key["client_secret"] = CLIENT_SECRET

barcode_api = BarcodeApi(ApiClient(config))

def generate_barcode_image(text: str, barcode_type: EncodeBarcodeType = EncodeBarcodeType.CODE_128) -> bytes:
    """
    Calls Aspose.BarCode Cloud to generate a barcode image for the given text.
    Returns raw PNG bytes.
    """
    request = GenerateBarcodeRequest(
        text=text,
        type=barcode_type,
        format="png"
    )
    try:
        response = barcode_api.generate_barcode(request)
        # response is a file-like object; read its content.
        return response.read()
    except ApiException as e:
        print(f"Error generating barcode for '{text}': {e}")
        raise

# -------------------- JSON to XLSX Conversion --------------------
INPUT_JSON_PATH = "input.json"
OUTPUT_XLSX_PATH = "output.xlsx"

# Load JSON data (expects a list of dictionaries)
with open(INPUT_JSON_PATH, "r", encoding="utf-8") as f:
    json_data: List[Dict[str, Any]] = json.load(f)

if not isinstance(json_data, list):
    raise ValueError("JSON root must be an array of objects.")

# Prepare workbook
wb = Workbook()
ws = wb.active
ws.title = "Data"

# Determine column order from first record
columns = list(json_data[0].keys())
# Append a column for the barcode image
barcode_column_name = "BarcodeImage"
columns.append(barcode_column_name)

# Write header row
for col_idx, col_name in enumerate(columns, start=1):
    ws.cell(row=1, column=col_idx, value=col_name)

# Cache to avoid regenerating identical barcodes
barcode_cache: Dict[str, bytes] = {}

# Process each JSON record
for row_idx, record in enumerate(json_data, start=2):
    # Write regular fields
    for col_idx, field_name in enumerate(columns[:-1], start=1):
        value = record.get(field_name, "")
        ws.cell(row=row_idx, column=col_idx, value=value)

# Generate or retrieve barcode image for a specific field (e.g., "code")
    barcode_source = str(record.get("code", f"row{row_idx}"))
    if barcode_source in barcode_cache:
        img_bytes = barcode_cache[barcode_source]
    else:
        img_bytes = generate_barcode_image(barcode_source)
        barcode_cache[barcode_source] = img_bytes

# Insert barcode image into the last column of the current row
    img_stream = io.BytesIO(img_bytes)
    img = XLImage(img_stream)
    # Adjust image size (optional)
    img.width, img.height = 150, 50
    img_cell = f"{get_column_letter(len(columns))}{row_idx}"
    ws.add_image(img, img_cell)

# Auto‑size columns (basic heuristic)
for col_idx, _ in enumerate(columns, start=1):
    column_letter = get_column_letter(col_idx)
    ws.column_dimensions[column_letter].width = 20

# Save workbook
wb.save(OUTPUT_XLSX_PATH)

print(f"Conversion complete. XLSX saved to '{OUTPUT_XLSX_PATH}'.")

Not: Bu kod örneği temel işlevselliği göstermektedir. Projenizde kullanmadan önce dosya yollarını (input.json, output.xlsx vb.) gerçek dosya konumlarınıza uygun şekilde güncellediğinizden, tüm gerekli bağımlılıkların doğru şekilde yüklendiğinden emin olun ve geliştirme ortamınızda kapsamlı bir şekilde test edin. Herhangi bir sorunla karşılaşırsanız, lütfen resmi belgeler adresine bakın veya destek ekibi ile iletişime geçin.

cURL ve REST API ile Aynı Görevi Çalıştırma

Saf bir REST yaklaşımını tercih ediyorsanız, aynı sonucu birkaç cURL komutuyla elde edebilirsiniz. İş akışı, Python uygulamasını yansıtır: bir erişim belirteci alın, JSON dosyasını yükleyin, barkodları oluşturun, XLSX dosyasını oluşturun ve sonucu indirin.

1. Kimlik Doğrulama ve Erişim Tokenı Alın

curl -X POST "https://api.aspose.cloud/connect/token" \
     -H "Content-Type: application/x-www-form-urlencoded" \
     -d "grant_type=client_credentials&client_id=YOUR_CLIENT_ID&client_secret=YOUR_CLIENT_SECRET"

Yanıt, sonraki çağrılarda kullanacağınız access_token içerir.

2. Kaynak JSON Dosyasını Aspose Cloud Storage’a Yükleyin

curl -X PUT "https://api.aspose.cloud/v3.0/storage/file/input.json" \
     -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
     -H "Content-Type: application/json" \
     --data-binary @input.json

3. Örnek Bir Değer İçin Barkod Görüntüsü Oluşturma

curl -X POST "https://api.aspose.cloud/v3.0/barcode/generate" \
     -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
     -H "Content-Type: application/json" \
     -d '{
           "text": "SampleCode123",
           "type": "Code128",
           "format": "png"
         }' \
     -o barcode.png

4. JSON’ı XLSX’e Aspose.Cells Cloud Kullanarak Dönüştür

curl -X POST "https://api.aspose.cloud/v3.0/cells/convert?format=xlsx" \
     -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
     -H "Content-Type: application/json" \
     -d '{"FileName":"input.json"}' \
     -o output.xlsx

5. Oluşturulan XLSX Dosyasını İndirin

curl -X GET "https://api.aspose.cloud/v3.0/storage/file/output.xlsx" \
     -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
     -o output.xlsx

Bu komutlar, aynı JSON’dan XLSX’e dönüşümünün kod yazmadan nasıl gerçekleştirilebileceğini gösterir. Daha fazla ayrıntı için, resmi API belgelerine bakın.

Optimum Sonuçlar İçin Dönüşüm Seçeneklerini Yapılandırma

Aspose.BarCode Cloud, projenize uyacak şekilde ayarlayabileceğiniz çeşitli parametreler sunar:

  • Barcode Type - EncodeBarcodeType.CODE_128, EncodeBarcodeType.QR, EncodeBarcodeType.PDF_417 vb. seçeneklerden birini seçin.
  • Image Format - PNG varsayılandır, ancak format alanını değiştirerek jpeg veya gif isteyebilirsiniz.
  • Image Size - Çözünürlüğü kontrol etmek için betikte img.width ve img.height değerlerini ayarlayın.
  • Column Width - Daha uzun metinlere sığdırmak için ws.column_dimensions[column_letter].width değerini değiştirin.

Barkod tipini ve görüntü formatını değiştirme örneği:

def generate_barcode_image(text: str,
                           barcode_type: EncodeBarcodeType = EncodeBarcodeType.QR,
                           image_format: str = "jpeg") -> bytes:
    request = GenerateBarcodeRequest(
        text=text,
        type=barcode_type,
        format=image_format
    )
    response = barcode_api.generate_barcode(request)
    return response.read()

Büyük JSON Veri Setleri için Performans Optimizasyonu

Binlerce kayıtla çalışırken, bu iyileştirmeleri göz önünde bulundurun:

  1. JSON’u Tüm Dosyayı Yüklemek Yerine Akıtın - Tam listeyi bellekte tutmadan kayıtlar üzerinde yinelemek için ijson kullanın.
  2. Tekrarlanan Barkodları Önbellekle - Örnek koddaki barcode_cache sözlüğü, aynı değerler için yinelenen API çağrılarını önler.
  3. Görselleri Akıllıca Yeniden Boyutlandır - Daha küçük barkod görselleri bellek kullanımını azaltır ve çalışma kitabının kaydedilmesini hızlandırır.
  4. Satırları Toplu Yaz - OpenPyXL, satırları toplu olarak yazmaya izin verir; yazma işlemlerini gruplamak yükü azaltabilir.

Bu ipuçlarını uygulamak, dönüşümün hızlı ve bellek‑verimli kalmasını, hatta büyük veri kümelerinde bile sağlar.

Sonuç

JSON to XLSX dönüşümü Python’da, Aspose.BarCode Cloud SDK for Python gücünden yararlandığınızda oldukça basit hale gelir. Bu kılavuz, ortam kurulumunu, barkod oluşturmayı, çalışma kitabı yaratmayı ve performans ayarlamasını adım adım göstererek raporlama boru hatları oluşturmak için sağlam bir temel sağlar. Üretim dağıtımları için ticari bir lisans gerektiğini unutmayın; fiyatlandırma seçeneklerini ürün sayfasında inceleyebilir veya geçici lisans sayfası üzerinden geçici bir lisans alabilirsiniz. Sağlanan kod ve en iyi uygulama önerileriyle, uygulamalarınıza güvenilir veri dışa aktarma işlevselliğini entegre etmeye hazırsınız.

SSS

  • Python’da kendi barkod mantığını yazmadan JSON’dan XLSX’e dönüşümü nasıl uygulayabilirim?
    Aspose.BarCode Cloud SDK’sını kullanarak barkodları otomatik olarak oluşturun ve Excel oluşturma için OpenPyXL ile birleştirin; tam kod örneğinde gösterildiği gibi.

  • JSON girişindeki eksik alanları ele almanın önerilen yolu nedir?
    Sözlük değerlerine record.get("field_name", "") kullanarak erişin, böylece varsayılan boş bir dize sağlanır ve çalışma sayfası doldurulurken çalışma zamanı hataları önlenir.

  • JSON dosyasını işleyebileceğim dosya boyutu konusunda herhangi bir sınırlama var mı?
    Bulut API’sinin kendisinde katı bir sınırlama yoktur, ancak çok büyük dosyalar için JSON’u akış olarak işleyip barkodları önbelleğe almanız önerilir; bu, performans bölümünde açıklanmıştır.

  • XLSX dosyası oluştururken Aspose.Cells için ayrı bir lisansa ihtiyacım var mı?
    Hayır. XLSX oluşturma işlemi yerel olarak OpenPyXL ile yapılır, bu nedenle yalnızca Aspose.BarCode Cloud SDK bulut çağrıları için lisans gerektirir.

Daha Fazla Oku