ნედლი JSON მონაცემების გადაყვანა დამუშავებულ XLSX ანგარიშებში ხშირად საჭიროა Python დეველოპერებისთვის, რომლებიც მუშაობენ ანალიტიკური داشბორდებზე. Aspose.BarCode Cloud SDK for Python უზრუნველყოფს ძლიერი ბიბლიოთეკას, რომელიც მარტივად აძლიერებს ბარკოდის გენერაციას და ფაილების მართვას ღრუბელში. ამ გიდში თქვენ შეისწავლით JSON‑ის XLSX-ში გადაყვანას Python-ში, SDK‑ის დაყენებიდან ბარკოდის სურათების გენერაციამდე და საბოლოო ცხრილის ექსპორტამდე. საბოლოოდ, თქვენ მიიღებთ მრავალჯერად სკრიპტს, მზადყოფნაში წარმოების სამუშაოებისთვის.

დაწყებამდე: წინაპირობები და ინსტალაცია

ამ გაკვეთილის შესასრულებლად თქვენ გჭირდებათ:

  • Python 3.7 ან უფრო ახალი, დაყენებული თქვენს კომპიუტერზე.
  • IDE ან ტექსტური რედაქტორი, თქვენი არჩევანის მიხედვით (VS Code, PyCharm და ა.შ.).
  • Aspose Cloud ანგარიში Client Id და Client Secret-ით.
  • ინტერნეტის წვდომა ღრუბლური API მოთხოვნებისთვის.

დაყენეთ საჭირო პაკეტები pip-ის საშუალებით:

pip install aspose-barcode-cloud openpyxl

თუ გინდათ ხელით ინსტალაცია, გადმოწერეთ SDK ოფიციალურ გამოშვების გვერდიდან: Download Aspose.BarCode Cloud SDK for Python.

API‑ის გამოძახებების დაწყებამდე, კონფიგურირეთ თქვენი ავტორიზაციის დეტალები:

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

გარემო მზადაა, ჩვენ შეგვიძლია გადავიდეთ განხორციელებაზე.

ნაბიჯ‑ნაბიჯ შექმნა: JSON-ის XLSX ფორმატში გადაყვანა Python-ში

ნაბიჯი 1: წყაროს JSON ფაილის ჩატვირთვა

წაიკითხეთ JSON მასივი, რომელიც შეიცავს მონაცემებს, რომელთა ექსპორტსაც გსურთ.

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

ნაბიჯი 2: სამუშაო წიგნისა და სათაურის რიგის მომზადება

შექმენით Excel-ის სამუშაო წიგნი OpenPyXL-ით და დაწერეთ სვეტის სათაურები.

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)

ნაბიჯი 3: ბარკოდის სურათების შექმნა

გამოიყენეთ Aspose.BarCode Cloud, რათა შექმნათ PNG ბარკოდი თითოეული ჩანაწერისთვის.
API-ის დოკუმენტაცია BarcodeApi.generate_barcode-ისათვის ხელმისაწვდომია API დოკუმენტაციაში.

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

ნაბიჯი 4: ბარკოდების ჩასმა სამუშაო ფურცელში

ქეშირეთ იდენტური ბარკოდები, რათა თავიდან აიცილოთ ზედმეტი API მოთხოვნები, შემდეგ ჩასვით სურათი.

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)

ნაბიჯი 5: სვეტების ავტომატური ზომის დაყენება და სამუშაო წიგნის შენახვა

დასრულეთ ფაილი და ჩაწერეთ იგი დისკზე.

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}'.")

ამ ნაბიჯებით JSON-დან XLSX-ში კონვერსია დასრულებულია, და თითოეულ რიგში ახლა შეიცავს ბარკოდის სურათს, რომელიც გენერირებულია Aspose.BarCode-ის მიერ.

სრული JSON‑დან XLSX‑ში სკრიპტი Python-ში - სრულყოფილი კოდის მაგალითი

შემდეგი მაგალითი აჩვენებს JSON‑დან XLSX ფორმატში გარდაქმნის სრულ‑განყოფილება Aspose.BarCode Cloud SDK for Python-ის გამოყენებით.

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}'.")

შენიშვნა: ეს კოდის მაგალითი აჩვენებს ძირითად ფუნქციონირებას. თქვენს პროექტში მისი გამოყენებამდე, დარწმუნდით, რომ განაახლეთ ფაილების ბილიკები (input.json, output.xlsx, ა.შ.) თქვენი რეალური ფაილების მდებარეობებთან შესაბამისი, გადამოწმეთ, რომ ყველა საჭირო დამოკიდებულება სწორად დაინსტალირებულია, და სრულად ტესტირეთ თქვენი განვითარების გარემოში. თუ რაიმე პრობლემის შეხვდებით, გთხოვთ მიმართოთ ოფიციალურ დოკუმენტაციას ან დაუკავშირდეთ მხარდაჭერის გუნდს დახმარებისთვის.

იგივე დავალების შესრულება cURL-ით და REST API-ით

თუ თქვენ უპირატესია სუფთა REST მიდგომა, შეგიძლიათ მიიღოთ იგივე შედეგი რამდენიმე cURL ბრძანებით. სამუშაო ნაკადი აკლონდება Python-ის განხორციელებას: მიიღეთ წვდომის ტოკენი, ატვირთეთ JSON ფაილი, გენერირეთ ბარკოდები, შექმენით XLSX ფაილი და ჩამოტვირთეთ შედეგი.

1. ავთენტიფიკაცია და წვდომის ტოკენის მიღება

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"

პასუხში შედის access_token, რომელიც შემდეგი მოთხოვნებში გამოიყენებთ.

2. JSON ფაილის წყაროს ატვირთვა Aspose Cloud Storage-ში

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. ბარკოდის გამოსახულების შექმნა ნიმუშის მნიშვნელობისთვის

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 ფორმატში გადაყვანა Aspose.Cells Cloud-ის გამოყენებით

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. მიღებული XLSX ფაილის გადმოწერა

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

ეს ბრძანებები აჩვენებს, როგორ შეიძლება იგივე JSON‑დან XLSX-ზე კონვერტაცია შესრულდეს კოდის დაწერის გარეშე. მეტი დეტალებისთვის იხილეთ ოფიციალური API დოკუმენტაცია.

კონვერტაციის პარამეტრების კონფიგურირება ოპტიმალურ შედეგებისთვის

Aspose.BarCode Cloud რამდენიმე პარამეტრს გთავაზობთ, რომლის შეცვლაც შეგიძლიათ თქვენი პროექტის მოთხოვნებზე შესაბამისი იყოს:

  • Barcode Type - აირჩიეთ EncodeBarcodeType.CODE_128, EncodeBarcodeType.QR, EncodeBarcodeType.PDF_417, და სხვა.
  • Image Format - PNG ნაგულისხმევია, მაგრამ შეგიძლიათ მოთხოვნათ jpeg ან gif format ველის შეცვლით.
  • Image Size - შეასწორეთ img.width და img.height სკრიპტში, რათა კონტროლიროთ რეზოლუცია.
  • Column Width - შეცვალეთ ws.column_dimensions[column_letter].width, რათა მოარგოთ უფრო გრძელი ტექსტი.

ბარკოდის ტიპის და გამოსახულების ფორმატის შეცვლის მაგალითი:

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()

დიდი JSON მონაცემთა ნაკრების შესრულების ოპტიმიზაცია

როდესაც მუშაობთ ათასობით ჩანაწერით, გაითვალისწინეთ შემდეგი ოპტიმიზაციები:

  1. JSON-ის ნაკადის გამოყენება მთელი ფაილის ჩატვირთვის ნაცვლად - გამოიყენეთ ijson, რათა ჩანაწერებზე იტერაციით გადახვიდეთ, არ დატოვოთ მთელი სია მეხსიერებაში.
  2. გამეორებული ბარკოდების ქეში - მაგალითის კოდში არსებული barcode_cache ლექსიკონი აცილებს დუბლირებულ API მოთხოვნებს იდენტური მნიშვნელობებისთვის.
  3. გამოსახულებების ჭკვიანი ზომის შეცვლა - უფრო პატარა ბარკოდის გამოსახულებები შემცირებს მეხსიერების მოხმარებას და აჩქარებს სამუშაო წიგნის შენახვას.
  4. რიგების ბაჩის ჩაწერა - OpenPyXL საშუალებას აძლევს რიგების მასობრივ ჩაწერას; ჩანაწერების ჯგუფირება შეიძლება შემციროთ ზედნადები დატვირთვა.

ამ რჩევების გამოყენებით კონვერსია სწრაფი და მეხსიერების ეფექტური დარჩება, მიუხედავად მასიური მონაცემთა ნაკრების.

დასკვნა

JSON‑ის XLSX ფორმატში გადაყვანა Python-ში მარტივად ხდება, როდესაც იყენებთ Aspose.BarCode Cloud SDK for Python-ის ძალას. ეს გიდი გაგიყევით გარემოს დაყენებით, ბარკოდების გენერაციით, სამუშაო წიგნის შექმნით და შესრულების ოპტიმიზაციით, რაც მოგაწვდით მყარი საფუძველს ანგარიშგების პაიპლაინების შესაქმნელად. გაითვალისწინეთ, რომ კომერციული ლიცენზია აუცილებელია პროდუქციის განსახილველად; შეგიძლიათ შეამოწმოთ ფასის არჩევანი პროდუქტის გვერდზე ან მიიღოთ დროებითი ლიცენზია დროებითი ლიცენზიის გვერდიდან. მოწოდებული კოდის და საუკეთესო პრაქტიკის რეკომენდაციებთან, მზად ხართ ინტეგრირებისთვის საიმედო მონაცემთა ექსპორტის ფუნქციონალობას თქვენს აპლიკაციებში.

ხშირად დასმული კითხვები

  • როგორ შემიძლია JSON-ის XLSX ფორმატში გადაყვანა Python-ში, ჩემი ბარაკოდის ლოგიკის დაწერის გარეშე?
    გამოიყენეთ Aspose.BarCode Cloud SDK ბარაკოდების ავტომატური გენერირებისთვის და გააერთიანეთ იგი OpenPyXL-ით Excel-ის შექმნისთვის, როგორც წარმოდგენილია სრულ კოდის მაგალითში.

  • JSON შეყვანის გამოტოვებული ველების დამუშავების რეკომენდირებული გზა რა არის?
    გამოიყენეთ record.get("field_name", "") დიქშნის მნიშვნელობებზე, რათა მიწოდოთ ნაგულისხმევი ცარიელი სტრიქონი, რაც ხელს უწყობს runtime შეცდომების თავიდან აცილებას სამუშაო ფურცლის შევსებისას.

  • JSON ფაილის ზომაზე, რომლის დამუშავება მინდა, რაიმე შეზღუდვები არსებობს?
    კლაუდის API-ს თვითონ არ აქვს მკაცრი ლიმიტი, თუმცა ძალიან დიდ ფაილების შემთხვევაში, თქვენ უნდა ნაკადის სახით გადაგზავნოთ JSON და ბარკოდები ქეშიში შეინახოთ, როგორც წარმადობის განყოფილებაში აღწერილია.

  • როცა ვქმნი XLSX ფაილს, საჭიროა ცალკეული ლიცენზია Aspose.Cells-ისთვის?
    არა. XLSX-ის გენერაცია ხდება ლოკალურად OpenPyXL-ის გამოყენებით, ამიტომ მხოლოდ Aspose.BarCode Cloud SDK-ს სჭირდება ლიცენზია ღრუბლოვანი მოთხოვნებისათვის.

მეტი