Open Source Python API สำหรับ Google ชีต

ไลบรารี Python ที่ทำให้ง่ายต่อการเรียก Python จาก Excel และในทางกลับกัน

Xlwings เป็นโอเพ่นซอร์ส python API สำหรับจัดการรูปแบบไฟล์ Excel การใช้ API คุณสามารถทำให้ excel จาก python เป็นอัตโนมัติเพื่อสร้างรายงาน เขียน UDF (ฟังก์ชันที่ผู้ใช้กำหนดเอง) เขียนมาโคร และควบคุม Excel จากระยะไกล นอกจากนี้ API ยังช่วยให้จัดการโครงสร้างข้อมูล เช่น เซลล์ รายการ ช่วง อาร์เรย์ NumPy กรอบข้อมูลแพนด้า และชุดแพนด้า

Xlwings ต้องการการติดตั้งของ Microsoft Excel ดังนั้นทุกอย่างจึงใช้งานได้บน Windows และ macOS ยกเว้นว่า UDF ใช้งานได้บน Windows เท่านั้น

Previous Next

เริ่มต้นกับ Xlwings

คุณต้องติดตั้ง Python 3.5 หรือสูงกว่าบนระบบของคุณเพื่อให้รัน xlwings ได้อย่างราบรื่น วิธีที่แนะนำในการติดตั้งผ่าน PIP โปรดใช้คำสั่งต่อไปนี้

ติดตั้ง Xlwings ผ่านคำสั่ง PIP

pip install xlwings

ติดตั้ง Xlwings ผ่าน Conda

conda install xlwings

โต้ตอบกับ Excel จาก Python

Xlwings API อนุญาตให้จัดการ Microsoft Spreadsheets โดยใช้ Python การใช้ API คุณสามารถเชื่อมต่อกับเวิร์กบุ๊กที่มีอยู่หรือสร้างใหม่โดยใช้เมธอด xlwings.Book() คุณสามารถอ่าน/เขียนค่าไปยัง & จากช่วง ขยายช่วง แปลงประเภทข้อมูลได้อย่างง่ายดาย นอกจากนี้ คุณสามารถเพิ่มแผนภูมิ Matplotlib & Plotly เป็นรูปภาพในสมุดงาน Excel ของคุณได้

รับขนาดของช่วง Excel แบบไดนามิกผ่าน Python

sheet = xw.Book().sheets[0]
sheet['A1'].value = [[1,2], [3,4]]
range1 = sheet['A1'].expand('table')  # or just .expand()
range2 = sheet['A1'].options(expand='table')
range1.value
[[1.0, 2.0], [3.0, 4.0]]
range2.value
[[1.0, 2.0], [3.0, 4.0]]
sheet['A3'].value = [5, 6]
range1.value
[[1.0, 2.0], [3.0, 4.0]]
range2.value

เรียก Python จาก Excel

ไลบรารีสเปรดชีตโอเพ่นซอร์ส Xlwings ช่วยให้นักพัฒนาซอฟต์แวร์สามารถสื่อสารกับ Python ผ่าน Excel ได้ คุณสามารถเรียก python funcitons ภายใน excel ของคุณโดยใช้ปุ่ม Run ของ Xlwings Excel Add-In หรือโดยใช้ RunPython VBA funciton ข้อดีของการใช้ Add-In ของ Excel คือคุณไม่จำเป็นต้องให้เวิร์กบุ๊กของคุณเปิดใช้งานแมโคร และคุณสามารถบันทึกเป็น xlsx ได้

ใช้สคริปต์ Python เพื่อแทรกรหัส R ใน Microsoft Excel

import tempfile
import segno
import xlwings as xw
# Update this with the name of your workbook
book = xw.Book('qr.xlsx')
sheet = xw.sheets[0]
# Update this with the starting cell of your URLs
start_cell = sheet['A1']
urls = start_cell.options(expand='down', ndim=1).value
# Loop through each URL and generate the QR code
for ix, url in enumerate(urls):
    # Generate the QR code
    qr = segno.make(url)
    with tempfile.TemporaryDirectory() as td:
        # Save the QR code as a temporary svg file. If you are on macOS, use pdf
        # instead and if you don't have Microsoft 365, you may have to use png
        filepath = f'{td}/qr.svg'
        qr.save(filepath, scale=5, border=0, finder_dark='#15a43a')
        # Insert the QR code to the right of the URL
        destination_cell = start_cell.offset(row_offset=ix, column_offset=1)
        sheet.pictures.add(filepath,
                           left=destination_cell.left,
                           top=destination_cell.top)

ฟังก์ชันที่กำหนดโดยผู้ใช้ (UDF) ใน Excel โดยใช้ Python

ไลบรารี Xlwings ช่วยให้นักพัฒนาสามารถเขียน User Defined Funcitons (UDFs) ในรูปแบบไฟล์ Microsoft Excel โดยทางโปรแกรม ปัจจุบัน UDF ใช้งานได้บน windows เท่านั้น API อนุญาตให้ใช้ funcitons อย่างง่าย จำนวนมิติอาร์เรย์ สูตรอาร์เรย์แบบไดนามิก สูตร arrya ที่มี NumPy และอื่นๆ

วิธีการโทร Marcos ผ่าน RunPython ใน Microsoft Excel

import xlwings as xw
@xw.sub
def my_macro():
    """Writes the name of the Workbook into Range("A1") of Sheet 1"""
    wb = xw.Book.caller()
    wb.sheets[0].range('A1').value = wb.name
 ไทย