Làm cách nào để định dạng bảng trong excel bằng python?

Trong MS Excel, Bảng là một dải ô đã được nhóm thành một thực thể duy nhất. Nó có thể được tham chiếu từ các công thức và có các thuộc tính định dạng chung. Một số tính năng như tiêu đề cột, bộ lọc tự động, tổng số hàng, công thức cột có thể được xác định trong bảng trang tính

Phương thức add_table[]

Phương thức trang tính add_table[] được sử dụng để thêm một phạm vi ô dưới dạng bảng

worksheet.add_table[first_row, first_col, last_row, last_col, options]

Cả hai phương pháp, ký hiệu 'A1' hoặc 'Hàng/Cột' tiêu chuẩn đều được cho phép để chỉ định phạm vi. Phương thức add_table[] có thể nhận một hoặc nhiều tham số tùy chọn sau. Lưu ý rằng ngoại trừ tham số phạm vi, các tham số khác là tùy chọn. Nếu không được cung cấp, một bảng trống sẽ được tạo

Thí dụ

dữ liệu

Tham số này có thể được sử dụng để chỉ định dữ liệu trong các ô của bảng. Nhìn vào ví dụ sau -

import xlsxwriter
wb = xlsxwriter.Workbook['hello.xlsx']
ws = wb.add_worksheet[]

data = [
   ['Namrata',  75, 65, 80],
   ['Ravi',     60, 70, 80],
   ['Kiran',    65, 75, 85],
   ['Karishma', 55, 65, 75],
]
ws.add_table["A1:D4", {'data':data}]

wb.close[]

đầu ra

Đây là kết quả -

dòng tiêu đề

Tham số này có thể được sử dụng để bật hoặc tắt hàng tiêu đề trong bảng. Nó được bật theo mặc định. Hàng tiêu đề sẽ chứa các chú thích mặc định như Cột 1, Cột 2, v.v. Bạn có thể đặt chú thích bắt buộc bằng cách sử dụng tham số cột

Cột

Thí dụ

Thuộc tính này được sử dụng để đặt chú thích cột

import xlsxwriter

wb = xlsxwriter.Workbook['hello.xlsx']
ws = wb.add_worksheet[]

data = [
   ['Namrata',  75, 65, 80],
   ['Ravi',     60, 70, 80],
   ['Kiran',    65, 75, 85],
   ['Karishma', 55, 65, 75],
]

ws.add_table["A1:D4",
{'data':data,
   'columns': [
   {'header': 'Name'},
   {'header': 'physics'},
   {'header': 'Chemistry'},
   {'header': 'Maths'}]
}]
wb.close[]

đầu ra

Hàng tiêu đề hiện được đặt như hình -

Bộ lọc tự động

Thông số này được BẬT, theo mặc định. Khi được đặt thành TẮT, hàng tiêu đề không hiển thị mũi tên thả xuống để đặt tiêu chí lọc

Tên

Trong bảng tính Excel, các bảng được đặt tên là Table1, Table2, v.v. Tham số name có thể dùng để đặt tên bảng theo yêu cầu

ws.add_table["A1:E4", {'data':data, 'name':'marklist'}]

Công thức

Có thể tạo cột có công thức bằng cách chỉ định thuộc tính phụ của công thức trong các tùy chọn cột

Thí dụ

Trong ví dụ sau, thuộc tính tên của bảng được đặt thành 'danh sách đánh dấu'. Công thức cho cột 'Tổng cộng' E tính tổng các điểm và được gán giá trị của thuộc tính con công thức

Trong bài cuối cùng của loạt bài này, tôi sẽ tiếp tục tự động hóa Excel bằng Python và chỉ cho bạn cách sử dụng một vài lệnh bên ngoài Tab Trang chủ

Trong bài đăng này, tôi sẽ chỉ cho bạn cách

  • Chèn hình ảnh
  • Lập biểu đồ
  • Viết công thức
  • Làm bảng

và kết thúc loạt bài này với một mẹo về năng suất trong khoa học dữ liệu

Cài đặt

Như bài trước mình sẽ dùng

from openpyxl import Workbook
from openpyxl.drawing.image import Image

workbook = Workbook[]

coffee_image = Image['coffee.png']
worksheet.add_image[coffee_image, 'C2']

worksheet['C1'] = 'Me drinking coffee and kicking back'

workbook.save['example.xlsx']
workbook.close[]
0 để làm bảng tính excel. Nhưng có thêm một thư viện để cài đặt nếu bạn muốn làm theo hướng dẫn này. PIL [Thư viện hình ảnh Python]. Nếu không, bạn sẽ thấy lỗi này

Khi tôi googled nó, phiên bản mới nhất của PIL là dành cho Python 1. 5. 2—wtf? . Thứ tôi cần cài đặt là thư viện

from openpyxl import Workbook
from openpyxl.drawing.image import Image

workbook = Workbook[]

coffee_image = Image['coffee.png']
worksheet.add_image[coffee_image, 'C2']

worksheet['C1'] = 'Me drinking coffee and kicking back'

workbook.save['example.xlsx']
workbook.close[]
1

pip install --user Pillow

Chèn hình ảnh

Để chèn một hình ảnh từ đĩa, tôi có thể tạo một đối tượng

from openpyxl import Workbook
from openpyxl.drawing.image import Image

workbook = Workbook[]

coffee_image = Image['coffee.png']
worksheet.add_image[coffee_image, 'C2']

worksheet['C1'] = 'Me drinking coffee and kicking back'

workbook.save['example.xlsx']
workbook.close[]
2, sau đó thêm hình ảnh vào trang tính bằng cách neo hình ảnh vào ô trên cùng bên trái của nó

Ví dụ, trong đoạn mã này, tôi đặt một hình ảnh trên ô

from openpyxl import Workbook
from openpyxl.drawing.image import Image

workbook = Workbook[]

coffee_image = Image['coffee.png']
worksheet.add_image[coffee_image, 'C2']

worksheet['C1'] = 'Me drinking coffee and kicking back'

workbook.save['example.xlsx']
workbook.close[]
3

from openpyxl import Workbook
from openpyxl.drawing.image import Image

workbook = Workbook[]

coffee_image = Image['coffee.png']
worksheet.add_image[coffee_image, 'C2']

worksheet['C1'] = 'Me drinking coffee and kicking back'

workbook.save['example.xlsx']
workbook.close[]

và kết quả trông giống như

Thu nhỏ hình ảnh

Tôi cũng có thể sửa đổi

from openpyxl import Workbook
from openpyxl.drawing.image import Image

workbook = Workbook[]

coffee_image = Image['coffee.png']
worksheet.add_image[coffee_image, 'C2']

worksheet['C1'] = 'Me drinking coffee and kicking back'

workbook.save['example.xlsx']
workbook.close[]
2 trước khi chèn để chia tỷ lệ hình ảnh của mình. Đặc biệt, tôi muốn thay đổi hai thuộc tính

  • Chiều cao
  • bề rộng

Ví dụ: tôi có thể tăng chiều cao lên 50% so với ảnh gốc trong mã của mình

import xlsxwriter
wb = xlsxwriter.Workbook['hello.xlsx']
ws = wb.add_worksheet[]

data = [
   ['Namrata',  75, 65, 80],
   ['Ravi',     60, 70, 80],
   ['Kiran',    65, 75, 85],
   ['Karishma', 55, 65, 75],
]
ws.add_table["A1:D4", {'data':data}]

wb.close[]
1

Kết quả là, bảng tính trông giống như

biểu đồ

from openpyxl import Workbook
from openpyxl.drawing.image import Image

workbook = Workbook[]

coffee_image = Image['coffee.png']
worksheet.add_image[coffee_image, 'C2']

worksheet['C1'] = 'Me drinking coffee and kicking back'

workbook.save['example.xlsx']
workbook.close[]
0 chỉ hỗ trợ một số biểu đồ hạn chế. Để xem danh sách đầy đủ các biểu đồ được hỗ trợ, vui lòng tham khảo tài liệu

  • Biểu đồ trong openpyxl

Lập biểu đồ

Biểu đồ trong Excel là một cách để hiển thị dữ liệu được tham chiếu. Vì vậy, mục tiêu của tôi ở đây là đặt một phạm vi ô [giả sử, một lưới ô hình chữ nhật] mà tôi muốn vẽ biểu đồ

Giả sử tôi có một số dữ liệu tên là

from openpyxl import Workbook
from openpyxl.drawing.image import Image

workbook = Workbook[]

coffee_image = Image['coffee.png']
worksheet.add_image[coffee_image, 'C2']

worksheet['C1'] = 'Me drinking coffee and kicking back'

workbook.save['example.xlsx']
workbook.close[]
6 [số lượng 15 hàng đầu tiên của dữ liệu bệnh tim UCI. ]

import xlsxwriter
wb = xlsxwriter.Workbook['hello.xlsx']
ws = wb.add_worksheet[]

data = [
   ['Namrata',  75, 65, 80],
   ['Ravi',     60, 70, 80],
   ['Kiran',    65, 75, 85],
   ['Karishma', 55, 65, 75],
]
ws.add_table["A1:D4", {'data':data}]

wb.close[]
4

Khi tôi đã ghi dữ liệu vào trang tính, tôi có thể tạo một biểu đồ tại ô

from openpyxl import Workbook
from openpyxl.drawing.image import Image

workbook = Workbook[]

coffee_image = Image['coffee.png']
worksheet.add_image[coffee_image, 'C2']

worksheet['C1'] = 'Me drinking coffee and kicking back'

workbook.save['example.xlsx']
workbook.close[]
7 bằng cách đặt tham chiếu của biểu đồ thanh của tôi tới các ô dữ liệu tương ứng

import xlsxwriter
wb = xlsxwriter.Workbook['hello.xlsx']
ws = wb.add_worksheet[]

data = [
   ['Namrata',  75, 65, 80],
   ['Ravi',     60, 70, 80],
   ['Kiran',    65, 75, 85],
   ['Karishma', 55, 65, 75],
]
ws.add_table["A1:D4", {'data':data}]

wb.close[]
6

để có được

Tôi đã sử dụng

from openpyxl import Workbook
from openpyxl.drawing.image import Image

workbook = Workbook[]

coffee_image = Image['coffee.png']
worksheet.add_image[coffee_image, 'C2']

worksheet['C1'] = 'Me drinking coffee and kicking back'

workbook.save['example.xlsx']
workbook.close[]
8 ở đây để chọn một ô hình chữ nhật cho dữ liệu của mình. Có một cách khác để chọn phạm vi dữ liệu bằng cách xác định một hộp có số cột và hàng

import xlsxwriter
wb = xlsxwriter.Workbook['hello.xlsx']
ws = wb.add_worksheet[]

data = [
   ['Namrata',  75, 65, 80],
   ['Ravi',     60, 70, 80],
   ['Kiran',    65, 75, 85],
   ['Karishma', 55, 65, 75],
]
ws.add_table["A1:D4", {'data':data}]

wb.close[]
8

Bỏ qua một trong các giá trị tối đa hoặc tối thiểu có nghĩa là chúng tôi chỉ chọn trên một cột hoặc một hàng. Biểu đồ kết quả là như nhau

Thuộc tính biểu đồ

Dựa trên tài liệu, dường như có một số thuộc tính tôi có thể điều chỉnh cho biểu đồ của mình

Phong cách

Nếu tôi thêm dòng này,

import xlsxwriter
wb = xlsxwriter.Workbook['hello.xlsx']
ws = wb.add_worksheet[]

data = [
   ['Namrata',  75, 65, 80],
   ['Ravi',     60, 70, 80],
   ['Kiran',    65, 75, 85],
   ['Karishma', 55, 65, 75],
]
ws.add_table["A1:D4", {'data':data}]

wb.close[]
9

sau đó, nó tạo ra một biểu đồ hơi khác với các đường viền màu trắng xung quanh các thanh. Tôi chưa tìm thấy bất kỳ tài liệu nào về số ánh xạ tới kiểu nào trong Excel—vì vậy nếu bạn tìm ra, hãy cho tôi biết

thuộc tính không xác định

Có một vài thuộc tính trong trang biểu đồ của openpyxl mà tôi thấy không hiển thị bất cứ thứ gì. tôi. e

import xlsxwriter

wb = xlsxwriter.Workbook['hello.xlsx']
ws = wb.add_worksheet[]

data = [
   ['Namrata',  75, 65, 80],
   ['Ravi',     60, 70, 80],
   ['Kiran',    65, 75, 85],
   ['Karishma', 55, 65, 75],
]

ws.add_table["A1:D4",
{'data':data,
   'columns': [
   {'header': 'Name'},
   {'header': 'physics'},
   {'header': 'Chemistry'},
   {'header': 'Maths'}]
}]
wb.close[]
0

viết công thức

Tôi có thể viết một công thức Excel bằng cách đặt một ô thành đúng tên công thức và phạm vi dữ liệu. Ví dụ để tính tổng của cột B, em có thể gọi hàm

from openpyxl import Workbook
from openpyxl.drawing.image import Image

workbook = Workbook[]

coffee_image = Image['coffee.png']
worksheet.add_image[coffee_image, 'C2']

worksheet['C1'] = 'Me drinking coffee and kicking back'

workbook.save['example.xlsx']
workbook.close[]
9 trong Excel bằng cách viết

import xlsxwriter

wb = xlsxwriter.Workbook['hello.xlsx']
ws = wb.add_worksheet[]

data = [
   ['Namrata',  75, 65, 80],
   ['Ravi',     60, 70, 80],
   ['Kiran',    65, 75, 85],
   ['Karishma', 55, 65, 75],
]

ws.add_table["A1:D4",
{'data':data,
   'columns': [
   {'header': 'Name'},
   {'header': 'physics'},
   {'header': 'Chemistry'},
   {'header': 'Maths'}]
}]
wb.close[]
2

mang lại cho tôi

Định dạng dưới dạng bảng

Bảng trong Excel, giống như biểu đồ, là tham chiếu đến một nhóm ô. Trong

from openpyxl import Workbook
from openpyxl.drawing.image import Image

workbook = Workbook[]

coffee_image = Image['coffee.png']
worksheet.add_image[coffee_image, 'C2']

worksheet['C1'] = 'Me drinking coffee and kicking back'

workbook.save['example.xlsx']
workbook.close[]
0, có một đối tượng
import xlsxwriter
wb = xlsxwriter.Workbook['hello.xlsx']
ws = wb.add_worksheet[]

data = [
   ['Namrata',  75, 65, 80],
   ['Ravi',     60, 70, 80],
   ['Kiran',    65, 75, 85],
   ['Karishma', 55, 65, 75],
]
ws.add_table["A1:D4", {'data':data}]

wb.close[]
11 mà tôi có thể tạo kiểu theo cùng một tên kiểu bảng từ Excel

Ví dụ: nếu tôi muốn sử dụng Table Style Light 1 từ Excel trên cùng một dữ liệu mà tôi đã sử dụng cho

import xlsxwriter
wb = xlsxwriter.Workbook['hello.xlsx']
ws = wb.add_worksheet[]

data = [
   ['Namrata',  75, 65, 80],
   ['Ravi',     60, 70, 80],
   ['Kiran',    65, 75, 85],
   ['Karishma', 55, 65, 75],
]
ws.add_table["A1:D4", {'data':data}]

wb.close[]
12, trước tiên tôi có thể tìm tên từ Excel

sau đó tôi có thể viết

import xlsxwriter

wb = xlsxwriter.Workbook['hello.xlsx']
ws = wb.add_worksheet[]

data = [
   ['Namrata',  75, 65, 80],
   ['Ravi',     60, 70, 80],
   ['Kiran',    65, 75, 85],
   ['Karishma', 55, 65, 75],
]

ws.add_table["A1:D4",
{'data':data,
   'columns': [
   {'header': 'Name'},
   {'header': 'physics'},
   {'header': 'Chemistry'},
   {'header': 'Maths'}]
}]
wb.close[]
6

và nó mang lại cho tôi

Đối với tài liệu, xem

  • bảng trang tính

Kết thúc

Cảm ơn bạn đã đọc hết 8 bài viết của PyderPuffGirls. [Và cảm ơn Keith, vì đã nghĩ ra tên cho phiên họp của chúng tôi. ]

Loạt bài đăng này xuất phát từ quan sát của tôi rằng nhiều người trong lĩnh vực phân tích đã dùng thử Python nhưng không thấy nó có thể giúp họ như thế nào trong công việc. Tôi hy vọng rằng thông qua các bài đăng này, bạn đã tìm thấy 2-3 điều mà bạn có thể sử dụng để tự động hóa các phần nhàm chán của công việc phân tích—có thể tái đầu tư cho công việc thử thách và bổ ích hơn

Vì vậy, tôi muốn kết thúc bài đăng này bằng một thủ thuật cuối cùng

Thủ thuật cuối cùng

Ngay cả khi bạn đã làm cho mình hiệu quả hơn thông qua tự động hóa

Nhẹ nhàng vượt quá mong đợi của người dùng

bởi vì rất hấp dẫn để cung cấp cho người dùng những gì họ muốn khi nó đã sẵn sàng

Nếu tôi có thể nhận được báo cáo trong 5 phút, thì tôi có thể gửi email cho họ kết quả vào phút thứ 6, phải không?

Thay vì cung cấp cho người dùng những gì họ muốn, hãy cung cấp cho họ những gì họ cần. Gửi các báo cáo theo cùng một lịch trình để giúp bạn có thêm thời gian. Sử dụng thêm thời gian cho các vấn đề mà chỉ trí óc con người mới có thể giải quyết để khám phá và phát triển thông tin chuyên sâu về dữ liệu. Tôi nghĩ đây là nơi thú vị thực sự trong khoa học dữ liệu. Vì vậy, hãy chấm dứt những thứ nhàm chán và vui chơi

Chủ Đề