การแปลงข้อมูลดิบ 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 จากหน้าปล่อยอย่างเป็นทางการ หากคุณต้องการการติดตั้งด้วยตนเอง: ดาวน์โหลด 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 reference

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 - ตัวอย่างโค้ดสมบูรณ์

ตัวอย่างต่อไปนี้แสดงการทำงานแบบ end‑to‑end ของการแปลง 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 มีพารามิเตอร์หลายอย่างที่คุณสามารถปรับแต่งให้เหมาะกับโครงการของคุณ:

  • ประเภทบาร์โค้ด - เลือกจาก EncodeBarcodeType.CODE_128, EncodeBarcodeType.QR, EncodeBarcodeType.PDF_417, เป็นต้น
  • รูปแบบภาพ - PNG เป็นค่าเริ่มต้น, แต่คุณสามารถขอ jpeg หรือ gif โดยเปลี่ยนฟิลด์ format
  • ขนาดภาพ - ปรับ img.width และ img.height ในสคริปต์เพื่อควบคุมความละเอียด
  • ความกว้างคอลัมน์ - แก้ไข 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 to XLSX conversion in Python becomes straightforward when you leverage the power of Aspose.BarCode Cloud SDK for Python. คู่มือนี้พาคุณผ่านการตั้งค่าสภาพแวดล้อม, การสร้างบาร์โค้ด, การสร้างเวิร์กบุ๊ก, และการปรับประสิทธิภาพ, ให้คุณมีพื้นฐานที่มั่นคงสำหรับการสร้าง pipeline รายงาน. จำไว้ว่าใบอนุญาตเชิงพาณิชย์จำเป็นสำหรับการใช้งานในสภาพแวดล้อมการผลิต; คุณสามารถสำรวจตัวเลือกการกำหนดราคาได้บนหน้าผลิตภัณฑ์หรือรับใบอนุญาตชั่วคราวจาก หน้าลิขสิทธิ์ชั่วคราว. ด้วยโค้ดที่ให้มาและคำแนะนำแนวปฏิบัติที่ดีที่สุด, คุณพร้อมที่จะรวมฟังก์ชันการส่งออกข้อมูลที่เชื่อถือได้เข้าไปในแอปพลิเคชันของคุณ.

คำถามที่พบบ่อย

  • ฉันจะทำการแปลง JSON เป็น XLSX ใน Python อย่างไรโดยไม่ต้องเขียนตราบาร์โค้ดของฉันเอง?
    ใช้ Aspose.BarCode Cloud SDK เพื่อสร้างบาร์โค้ดโดยอัตโนมัติและผสานกับ OpenPyXL เพื่อสร้างไฟล์ Excel ตามตัวอย่างโค้ดเต็มที่แสดงไว้

  • วิธีที่แนะนำในการจัดการกับฟิลด์ที่หายไปในอินพุต JSON คืออะไร?
    เข้าถึงค่าของพจนานุกรมด้วย record.get("field_name", "") เพื่อกำหนดค่าเริ่มต้นเป็นสตริงว่าง ป้องกันข้อผิดพลาดขณะรันไทม์ระหว่างการเติมข้อมูลลงในแผ่นงาน

  • มีข้อจำกัดใดเกี่ยวกับขนาดของไฟล์ JSON ที่ฉันสามารถประมวลผลได้หรือไม่?
    API บนคลาวด์เองไม่มีข้อจำกัดที่แน่นอน แต่สำหรับไฟล์ที่มีขนาดใหญ่มาก คุณควรสตรีม JSON และแคชบาร์โค้ดตามที่อธิบายในส่วนประสิทธิภาพ

  • ฉันต้องการใบอนุญาตแยกต่างหากสำหรับ Aspose.Cells เมื่อสร้างไฟล์ XLSX หรือไม่?
    ไม่. การสร้างไฟล์ XLSX ทำงานในเครื่องโดยใช้ OpenPyXL ดังนั้นจึงมีเพียง Aspose.BarCode Cloud SDK ที่ต้องการใบอนุญาตสำหรับการเรียกใช้คลาวด์

อ่านเพิ่มเติม