Python: Creating Excel files with XlsxWriter

Grassroot Engineer
CODIUM
Published in
2 min readApr 15, 2021

--

https://xlsxwriter.readthedocs.io/

ในบทความนี้จะลองมาใช้ lib ตัวนึงที่นำ Python มาใช้สร้าง excel file นั่นคือ XlsxWriter ซึ่งจากที่อ่าน doc เขาบอกว่า 100% compatible กับ Excel xlsx files เลยทีเดียว ไปลองทดสอบกันเลยดีกว่า

  1. ติดตั้ง package ก่อน
pip install xlsxwriter

2. ทดสอบ write data เข้าไปใน specific cells ที่เรากำหนด

import os.path
import xlsxwriter

folder_path = '/Users/atthana/Desktop/excels/'
excel_path = os.path.join(folder_path, 'codium_2021.xlsx')

workbook = xlsxwriter.Workbook(excel_path) # กำหนด path ที่จะ save

worksheet = workbook.add_worksheet(name='Members')

worksheet.write('A1', 'Id.')
worksheet.write('B1', 'Name')
worksheet.write('C1', 'E-mail')
worksheet.write('D1', 'Position')

workbook.close() # ปิดไฟล์ excel เมื่อเขียนเสร็จ
จะได้ไฟล์ codium_2021.xlsx พร้อมกับข้อมูลที่เรา write เข้าไปตาม cells ที่กำหนด

3. ทดลอง refactor code เพื่อให้เป็นสัดเป็นส่วนและเพิ่มในส่วนของการเพิ่ม content เข้าไปตามแนว column (using the row-column notation) ด้วย for-loop

def add_content_by_column(worksheet):
row = 1
column = 1
names = ['Norak', 'Ten', 'Earch', 'Peter', 'Atthana', 'Kukkik', 'Stefan', 'Saeed']
for name in names:
worksheet.write(row, column, name)
row += 1
เพิ่มข้อมูลเข้าไปด้าน column โดยระบุ row และ column ด้วย

4. จากนั้นทดสอบเพิ่ม data เข้าไปใน cell ที่เหลือ แบบ List ซ้อนกัน โดยใช้ for-loop และระบุตำแหน่งของ cell ที่จะว่าง data เข้าไป

def add_content_of_id_email_position():
data = (
[1, 'norak@codium.co', 'Senior dev'],
[2, 'ten@codium.co', 'Senior dev'],
[3, 'earth@codium.co', 'Senior dev'],
[4, 'peter@codium.co', 'Senior dev'],
[5, 'atthana@codium.co', 'Grassroot dev'],
[6, 'kukkik@codium.co', 'Senior dev'],
[7, 'stefan@codium.co', 'Senior dev'],
[8, 'saeed@codium.co', 'Senior dev'],
)
row = 1
column = 0

for dev_id, email, position in data:
work_sheet.write(row, column, dev_id)
work_sheet.write(row, column + 2, email)
work_sheet.write(row, column + 3, position)
row += 1
เพิ่มข้อมูลเข้าไปใน column ที่เหลือ คือ Id, E-mail, Position โดยระบุตำแหน่ง cell.

5. ทดลองเพิ่มในส่วนของ format cell เข้าไป

format1 = workbook.add_format({'bg_color': '#4285F4',
'font_color': '#000000',
'bold': True,
})
worksheet.conditional_format('A1:D1', {'type': 'cell',
'criteria': '>=',
'value': 50,
'format': format1})
เพิ่มส่วนของการจัดการ format ใน cell ที่เป็น title bar.

จิงๆแล้ว working with excel ยังมี package ตัวอื่นๆอีกหลายตัวคับ เช่น

แล้วพบกันใหม่คับ

Code.

--

--

Grassroot Engineer
CODIUM
Writer for

ATM engineer who is interested in CODING and believe in EFFORT. — https://grassrootengineer.com