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.xlsxvb.) 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_417vb. seçeneklerden birini seçin. - Image Format - PNG varsayılandır, ancak
formatalanını değiştirerekjpegveyagifisteyebilirsiniz. - Image Size - Çözünürlüğü kontrol etmek için betikte
img.widthveimg.heightdeğerlerini ayarlayın. - Column Width - Daha uzun metinlere sığdırmak için
ws.column_dimensions[column_letter].widthdeğ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:
- JSON’u Tüm Dosyayı Yüklemek Yerine Akıtın - Tam listeyi bellekte tutmadan kayıtlar üzerinde yinelemek için
ijsonkullanın. - Tekrarlanan Barkodları Önbellekle - Örnek koddaki
barcode_cachesözlüğü, aynı değerler için yinelenen API çağrılarını önler. - 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.
- 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ğerlerinerecord.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.