NỘI DUNG
1. Định dạng font/kiểu chữ, căn chỉnh lề, kẻ bảng, điều chỉnh kích thước
2. Các ví dụ làm quen với bảng dữ liệu
3. Copy bảng dữ liệu/copy sheet
THỰC HIỆN
1. Định dạng font/kiểu chữ, căn chỉnh lề, kẻ bảng, điều chỉnh kích thước
2. Các ví dụ làm quen với bảng dữ liệu
Ví dụ 1:
Gán dữ liệu vào ô, định dạng như hình và lưu file lại thành file
"BangDuLieu.xlsx"
Code:
import xlwings as xw
from xlwings.constants import HAlign, VAlign
wb = xw.Book()
sht = xw.sheets.active
sht['A1:F100'].clear()
sht['C1'].value = "Thong Tin Nhan Vien"
sht['C1'].api.Font.Name = 'Arial'
sht['C1'].api.Font.Bold = True
sht['A1:E1'].merge()
sht["A1:E1"].api.HorizontalAlignment = HAlign.xlHAlignCenter
list_menu = ["No","Employee Name","National","Age","Gender"] # tiêu đề
sht['A2'].value = list_menu
sht['A2:E2'].api.WrapText = True
sht["A2:E2"].api.HorizontalAlignment = HAlign.xlHAlignCenter
sht["A2:E2"].api.VerticalAlignment = VAlign.xlVAlignCenter
sht['A2:E2'].api.Font.Bold = True
sht.book.save("BangDuLieu.xlsx")
Ví dụ 2:
Mở file "BangDuLieu.xlsx" ở ví dụ 1, điền thông tin, định dạng, điều chỉnh
chiều cao cho hàng, độ rộng cho cột và kẽ viền như hình dưới, lưu lại với tên
file mới là "BangDuLieu_Vien.xlsx" và đóng file "BangDuLieu.xlsx"
Code:
import xlwings as xw
from xlwings.constants import HAlign, VAlign
wb = xw.Book(r"C:\tmp\BangDuLieu.xlsx")
sht = wb.sheets["Sheet1"]
list_No = [1,2,3,4,5]
list_Employee = ['Jonathan Wick', 'Steve Roger', 'Helen Johansson', 'George Butcher', 'Britany Moonwalk']
list_National = ['USA', 'France', 'Italia','USA', 'France']
list_Age = [25,26,27,28,26]
list_gender = ['Male','Male','Female','Male','Female']
sht['A3'].options(transpose=True).value = list_No
sht['B3'].options(transpose=True).value = list_Employee
sht['C3'].options(transpose=True).value = list_National
sht['D3'].options(transpose=True).value = list_Age
sht['E3'].options(transpose=True).value = list_gender
#Set witdh to columns and height to rows
sht['1:7'].row_height = 20
sht['A:A'].column_width = 5
sht['B:B'].column_width = 15
sht['C:E'].column_width = 10
sht['A3:E7'].api.HorizontalAlignment = HAlign.xlHAlignCenter
#Set border to sample excel
for i in range(7,13):
sht['A2:E7'].api.Borders(i).LineStyle = 1
wb = xw.books.active
wb.save("BangDuLieu_Vien.xlsx")
wb.close("BangDuLieu.xlsx")
Ví dụ 3:
- Tạo tiêu đề cho bảng dữ liệu với 3 cột có nội dung là: No., Full Nam, Age.
Với các giá trị từng cột là
+ No. là số từ 1-9
+ Full Name: là các tên được sinh ra ngẫu nhiên
+
Age: là số ngẫu nhiên trong khoảng từ 20-50
- Căn chỉnh chữ, kích thước vừa các hàng cột
- Kẻ khung nét kẻ đơn cho bảng dữ liệu
- Lưu file với tên "BangDuLieu_ngaunhien.xlsx"
Code:
import xlwings as xw
from xlwings.constants import HAlign, VAlign
import random
wb = xw.Book()
sht = xw.sheets.active
sht['A1'].value = "TẠO BẢNG DỮ LIỆU NGẪU NHIÊN"
sht['A1'].api.Font.Name = 'Arial'
sht['A1'].api.Font.Bold = True
sht['A1:C1'].merge()
sht["A1:C1"].api.HorizontalAlignment = HAlign.xlHAlignCenter
sht["A1:C1"].api.VerticalAlignment = VAlign.xlVAlignCenter
sht["A2"].value = ["No.","Full Name","Age"] # ô A2 có nội dung là No., A3 là Full Name,....
sht["2:2"].font.bold = True
sht["2:2"].api.HorizontalAlignment = HAlign.xlHAlignCenter
sht["2:2"].api.VerticalAlignment = VAlign.xlVAlignCenter
list_no = list(range(1,10)) # Tạo ra list có giá trị 1-9
sht["A3"].options(transpose=True).value = list_no # transpose = True: là theo chiều dọc, gán giá trị A3 là 1, A4 là 2,.....,
def get_full_name(first_name, mid_name, last_name): # hàm nối chuỗi, fullname
full_name = f"{first_name} {mid_name} {last_name}"
return full_name
list_first_name = ["Van","Nguyen","Tran","Le","Pham"]
list_mid_name = ["Cong","Hoang","Quynh"]
list_last_name = ["Khanh","Chin","Huy","Dung","Phi","Son","Hung","Cuong"]
list_full_name =[] # list trống, để chứa cá tên
list_tuoi = []
for i in range(1,10):
first_name = random.choice(list_first_name) # chọn ngẫu nhiên mội tên/giá trị trong list_first_name
mid_name = random.choice(list_mid_name)
last_name =random.choice(list_last_name)
list_full_name.append(get_full_name(first_name,mid_name,last_name)) #gọi hàm get_full_name và thêm vào list
list_tuoi.append(random.randrange(20,50,1)) # chọn ngẫu nhiên số trong khoảng 20 -> 50, bước nhảy là 1
sht["B3"].options(transpose=True).value = list_full_name # gáng giá trị của list_full_name cho B3, B4, B5....
sht["C3"].options(transpose=True).value = list_tuoi # tương tự, gán giá trị cho C3, C4,...
# ===chỉnh kích thước, autofit
sht["C:C"].autofit() # vì A1 đến C1 merge cell nên chúng ta phải để đầu tiên
sht["1:1"].row_height = 30 # chiều cao của hàng đầu tiên
sht["2:11"].row_height = 20 # chiều cao của hàng
sht["A:A"].column_width = 5 # độ rộng cột A là 5
sht["B:B"].column_width = 25 # độ rộng cột B - C là 25
sht["C:C"].api.HorizontalAlignment = HAlign.xlHAlignCenter
# ===Kẻ bảng/border
for i in range (7, 13): # bắt buộc 7, 13
sht["A2:C11"].api.Borders(i).LineStyle = 1 # 1 là kẻ đơn
wb = xw.books.active
wb.save("BangDuLieu_ngaunhien.xlsx")
Kết quả:
3. Copy bảng dữ liệu/copy sheet
Code:
import xlwings as xw
wb = xw.Book(r"C:\tmp\BangDuLieu_ngaunhien.xlsx")
xw.sheets.add(name="backup", after="Sheet1") # tạo sheet mới có tên backup, sheet này đứng sau sheet1
sht = xw.sheets["Sheet1"]
sht_bk = xw.sheets["backup"]
sht["A2:C11"].copy(sht_bk["A2:C11"]) # copy dữ liệu từ A2:C11 của sheet1 đến sheet có tên backup
wb.save("BangDuLieu_copy.xlsx")
Kết quả:
Xong!