Konvertering af rå JSON data til polerede XLSX rapporter er et hyppigt behov for Python‑udviklere, der arbejder på analyse‑dashboards. Aspose.BarCode Cloud SDK for Python leverer et kraftfuldt bibliotek, der forenkler stregkode‑generering og filhåndtering i skyen. I denne vejledning vil du lære JSON‑til‑XLSX‑konvertering i Python, fra opsætning af SDK’en til generering af stregkode‑billeder og eksport af det endelige regneark. Når du er færdig, har du et genanvendeligt script klar til produktionsarbejde.
Før du begynder: Forudsætninger og installation
For at følge denne vejledning skal du:
- Python 3.7 eller nyere installeret på din maskine.
- En IDE eller teksteditor efter eget valg (VS Code, PyCharm osv.).
- En Aspose Cloud-konto med Client Id og Client Secret.
- Internetadgang til cloud‑API‑opkald.
Installer de nødvendige pakker med pip:
pip install aspose-barcode-cloud openpyxl
Download SDK’en fra den officielle udgivelsesside, hvis du foretrækker en manuel installation: Download Aspose.BarCode Cloud SDK for Python.
Konfigurer dine legitimationsoplysninger, før du foretager API‑kald:
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
Med miljøet klar, kan vi gå videre til implementeringen.
Opbygning trin for trin: JSON til XLSX-konvertering i Python
Trin 1: Indlæs kilde‑JSON‑filen
Læs JSON‑arrayet, der indeholder de data, du vil eksportere.
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
Trin 2: Forbered arbejdsbogen og overskriftsraden
Opret en Excel-arbejdsbog med OpenPyXL og skriv kolonneoverskrifter.
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)
Trin 3: Generer stregkodebilleder
Brug Aspose.BarCode Cloud til at oprette en PNG stregkode for hver post.
API-referencen for BarcodeApi.generate_barcode er tilgængelig i API-referencen.
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
Trin 4: Indsæt stregkoder i regnearket
Cache identiske stregkoder for at undgå overflødige API‑kald, og indlejre derefter billedet.
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)
Trin 5: Auto‑juster kolonner og gem projektmappen
Afslut filen og skriv den til disken.
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}'.")
Med disse trin er JSON til XLSX‑konverteringen fuldført, og hver række indeholder nu et stregkodebillede genereret af Aspose.BarCode.
Fuld JSON til XLSX Script i Python - Komplet kodeeksempel
Det følgende eksempel demonstrerer den ende‑til‑ende implementering af JSON‑til‑XLSX‑konvertering ved hjælp af 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}'.")
Note: Dette kodeeksempel demonstrerer kernefunktionaliteten. Før du bruger det i dit projekt, skal du sørge for at opdatere filstierne (
input.json,output.xlsxosv.) så de matcher dine faktiske filplaceringer, bekræfte at alle nødvendige afhængigheder er korrekt installeret, og teste grundigt i dit udviklingsmiljø. Hvis du støder på problemer, så se venligst den officielle dokumentation eller kontakt supportteamet for assistance.
Udførelse af den samme opgave med cURL og REST API
Hvis du foretrækker en ren REST‑tilgang, kan du opnå det samme resultat med et par cURL‑kommandoer. Arbejdsgangen spejler Python‑implementeringen: hent et adgangstoken, upload JSON‑filen, generer stregkoder, opret XLSX‑filen og download resultatet.
1. Godkend og hent en adgangstoken
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"
Svaret indeholder access_token, som du vil bruge i efterfølgende kald.
2. Upload kildefilen JSON til 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. Generer et stregkodebillede for en prøveværdi
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. Konverter JSON til XLSX ved hjælp af 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. Download den resulterende XLSX-fil
curl -X GET "https://api.aspose.cloud/v3.0/storage/file/output.xlsx" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-o output.xlsx
Disse kommandoer illustrerer, hvordan den samme JSON til XLSX‑konvertering kan udføres uden at skrive kode. For flere detaljer, se den officielle API‑dokumentation.
Konfiguration af konverteringsindstillinger for optimale resultater
Aspose.BarCode Cloud tilbyder flere parametre, som du kan justere for at passe til dit projekt:
- Stregkode type - Vælg fra
EncodeBarcodeType.CODE_128,EncodeBarcodeType.QR,EncodeBarcodeType.PDF_417, osv. - Billedformat - PNG er standard, men du kan anmode om
jpegellergifved at ændreformat-feltet. - Billedstørrelse - Juster
img.widthogimg.heighti scriptet for at styre opløsningen. - Kolonnebredde - Modificer
ws.column_dimensions[column_letter].widthfor at tilpasse længere tekst.
Eksempel på at ændre stregkode‑typen og billedformatet:
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()
Optimering af ydeevne for store JSON-datasæt
Når du håndterer tusindvis af poster, skal du overveje disse optimeringer:
- Stream JSON i stedet for at indlæse hele filen - Brug
ijsontil at iterere over poster uden at holde hele listen i hukommelsen. - Cache gentagne stregkoder -
barcode_cache-ordbogen i eksempelkoden forhindrer dublerede API‑kald for identiske værdier. - Skaler billeder fornuftigt - Mindre stregkodebilleder reducerer hukommelsesforbruget og fremskynder lagring af arbejdsbogen.
- Batch‑skriv rækker - OpenPyXL tillader at skrive rækker i bulk; gruppering af skrivninger kan reducere overhead.
Ved at anvende disse tips vil konverteringen forblive hurtig og hukommelses‑effektiv selv for massive datasæt.
Konklusion
JSON til XLSX-konvertering i Python bliver enkel, når du udnytter kraften i Aspose.BarCode Cloud SDK for Python. Denne vejledning guider dig gennem opsætning af miljøet, generering af stregkoder, oprettelse af regneark og optimering af ydeevne, og giver dig et solidt grundlag for at bygge rapporterings‑pipelines. Husk, at en kommerciel licens kræves til produktionsimplementeringer; du kan undersøge prisoptioner på produktsiden eller få en midlertidig licens fra den midlertidige licensside. Med den medfølgende kode og anbefalinger om bedste praksis er du klar til at integrere pålidelig data‑eksportfunktionalitet i dine applikationer.
Ofte stillede spørgsmål
-
Hvordan kan jeg implementere JSON til XLSX konvertering i Python uden at skrive min egen stregkode‑logik?
Brug Aspose.BarCode Cloud SDK til automatisk at generere stregkoder og kombiner det med OpenPyXL til oprettelse af Excel, som vist i det komplette kodeeksempel. -
Hvad er den anbefalede måde at håndtere manglende felter i JSON‑inputtet?
Få adgang til ordbogsværdier medrecord.get("field_name", "")for at levere en standardtom streng, hvilket forhindrer køretidsfejl under udfyldning af regnearket. -
Er der nogen grænser for størrelsen af JSON-filen, jeg kan behandle?
Cloud API’en har ingen fast grænse, men for meget store filer bør du streame JSON’en og cache stregkoder, som beskrevet i afsnittet om ydeevne. -
Skal jeg have en separat licens til Aspose.Cells, når jeg opretter XLSX-filen?
Nej. XLSX-genereringen udføres lokalt med OpenPyXL, så kun Aspose.BarCode Cloud SDK kræver en licens til cloud‑opkald.