Hướng dẫn how do i format a cell in excel using openpyxl? - làm cách nào để định dạng một ô trong excel bằng openpyxl?

OpenPyxl

Giới thiệu¶

Các kiểu được sử dụng để thay đổi giao diện của dữ liệu của bạn trong khi được hiển thị trên màn hình. Chúng cũng được sử dụng để xác định định dạng cho các số.

Kiểu có thể được áp dụng cho các khía cạnh sau:

  • Phông chữ để đặt kích thước phông chữ, màu sắc, gạch chân, v.v.
  • Điền để đặt một mẫu hoặc gradient màu
  • Biên giới để đặt biên giới trên một ô
  • Căn chỉnh tế bào
  • sự bảo vệ

Sau đây là các giá trị mặc định

>>> from openpyxl.styles import PatternFill, Border, Side, Alignment, Protection, Font
>>> font = Font(name='Calibri',
...                 size=11,
...                 bold=False,
...                 italic=False,
...                 vertAlign=None,
...                 underline='none',
...                 strike=False,
...                 color='FF000000')
>>> fill = PatternFill(fill_type=None,
...                 start_color='FFFFFFFF',
...                 end_color='FF000000')
>>> border = Border(left=Side(border_style=None,
...                           color='FF000000'),
...                 right=Side(border_style=None,
...                            color='FF000000'),
...                 top=Side(border_style=None,
...                          color='FF000000'),
...                 bottom=Side(border_style=None,
...                             color='FF000000'),
...                 diagonal=Side(border_style=None,
...                               color='FF000000'),
...                 diagonal_direction=0,
...                 outline=Side(border_style=None,
...                              color='FF000000'),
...                 vertical=Side(border_style=None,
...                               color='FF000000'),
...                 horizontal=Side(border_style=None,
...                                color='FF000000')
...                )
>>> alignment=Alignment(horizontal='general',
...                     vertical='bottom',
...                     text_rotation=0,
...                     wrap_text=False,
...                     shrink_to_fit=False,
...                     indent=0)
>>> number_format = 'General'
>>> protection = Protection(locked=True,
...                         hidden=False)
>>>

Kiểu di động và Styles được đặt tên

Có hai loại kiểu: kiểu ô và kiểu được đặt tên, còn được gọi là mẫu phong cách.

Phong cách di động

Các kiểu ô được chia sẻ giữa các đối tượng và một khi chúng được chỉ định, chúng không thể thay đổi. Điều này dừng các tác dụng phụ không mong muốn như thay đổi phong cách cho nhiều ô khi chỉ có một thay đổi.

>>> from openpyxl.styles import colors
>>> from openpyxl.styles import Font, Color
>>> from openpyxl import Workbook
>>> wb = Workbook()
>>> ws = wb.active
>>>
>>> a1 = ws['A1']
>>> d4 = ws['D4']
>>> ft = Font(color="FF0000")
>>> a1.font = ft
>>> d4.font = ft
>>>
>>> a1.font.italic = True # is not allowed # doctest: +SKIP
>>>
>>> # If you want to change the color of a Font, you need to reassign it::
>>>
>>> a1.font = Font(color="FF0000", italic=True) # the change only affects A1

Sao chép Styles¶

Phong cách cũng có thể được sao chép

>>> from openpyxl.styles import Font
>>> from copy import copy
>>>
>>> ft1 = Font(name='Arial', size=14)
>>> ft2 = copy(ft1)
>>> ft2.name = "Tahoma"
>>> ft1.name
'Arial'
>>> ft2.name
'Tahoma'
>>> ft2.size # copied from the
14.0

Màu sắc¶

Màu sắc cho phông chữ, hình nền, đường viền, vv có thể được đặt theo ba cách: lập chỉ mục, argb hoặc chủ đề. Màu sắc được lập chỉ mục là việc triển khai kế thừa và bản thân các màu phụ thuộc vào chỉ mục được cung cấp với sổ làm việc hoặc với mặc định ứng dụng. Màu sắc chủ đề rất hữu ích cho các sắc thái bổ sung của màu sắc nhưng cũng phụ thuộc vào chủ đề có mặt trong sổ làm việc. Do đó, nó được khuyến khích sử dụng màu Argb.

Argb Colours¶

Màu RGB được đặt bằng cách sử dụng các giá trị thập lục phân cho màu đỏ, xanh lá cây và xanh dương.

>>> from openpyxl.styles import Font
>>> font = Font(color="FF0000")

Giá trị alpha đề cập đến lý thuyết về độ trong suốt của màu nhưng điều này không liên quan đến các kiểu ô. Mặc định 00 sẽ được chuẩn bị cho bất kỳ giá trị RGB đơn giản nào:

>>> from openpyxl.styles import Font
>>> font = Font(color="00FF00")
>>> font.color.rgb
'0000FF00'

Ngoài ra còn có sự hỗ trợ cho các màu sắc được lập chỉ mục kế thừa cũng như các chủ đề và sắc thái.

>>> from openpyxl.styles.colors import Color
>>> c = Color(indexed=32)
>>> c = Color(theme=6, tint=0.5)

Màu sắc được lập chỉ mục

Màu sắc tiêu chuẩn
Mục lục
0-4 00000000 00ffffff 00FF0000 0000FF00 000000ff
5-9 00FFFF00 00FF00FF 0000ffff 00000000 00ffffff
00FF0000 00FF0000 0000FF00 000000ff 00FFFF00 00FF00FF
0000ffff 0000ffff 00800000 00008000 00000080 00808000
10-14 00800080 00008080 15-19 00808080 20-24
00C0C0C0 00993366 009999ff 25-29 00660066 00ffffcc
00ccffff 00FF8080 30-34 00000080 00FF00FF 00FFFF00
00FF00FF 0000ffff 00800080 00800000 00008080 000000ff
5-9 00FFFF00 25-29 00ffffcc 00ccffff 00FF8080
30-34 000066cc 00ccccff 35-39 40-44 0000ccff
00ccffcc 00ffff99 0099ccff 45-49 00ff99cc 00666699
00cc99ff 00969696 00003366 00339966 00003300 00333300
00FFCC99 00993300 00993366 00333399 00333333

003366ff

0033CCCC

50-54

>>> from openpyxl.workbook import Workbook
>>> from openpyxl.styles import Font, Fill
>>> wb = Workbook()
>>> ws = wb.active
>>> c = ws['A1']
>>> c.font = Font(size=12)

0099CC00

>>> col = ws.column_dimensions['A']
>>> col.font = Font(bold=True)
>>> row = ws.row_dimensions[1]
>>> row.font = Font(underline="single")

00FFCC00

00FF9900

>>> from openpyxl.styles import Border, Side, PatternFill, Font, GradientFill, Alignment
>>> from openpyxl import Workbook
>>>
>>> wb = Workbook()
>>> ws = wb.active
>>> ws.merge_cells('B2:F4')
>>>
>>> top_left_cell = ws['B2']
>>> top_left_cell.value = "My Cell"
>>>
>>> thin = Side(border_style="thin", color="000000")
>>> double = Side(border_style="double", color="ff0000")
>>>
>>> top_left_cell.border = Border(top=double, left=thin, right=thin, bottom=double)
>>> top_left_cell.fill = PatternFill("solid", fgColor="DDDDDD")
>>> top_left_cell.fill = fill = GradientFill(stop=("000000", "FFFFFF"))
>>> top_left_cell.font  = Font(b=True, color="FF0000")
>>> top_left_cell.alignment = Alignment(horizontal="center", vertical="center")
>>>
>>> wb.save("styled.xlsx")

00FF6600

>>> from openpyxl.workbook import Workbook
>>>
>>> wb = Workbook()
>>> ws = wb.active
>>>
>>> ws.page_setup.orientation = ws.ORIENTATION_LANDSCAPE
>>> ws.page_setup.paperSize = ws.PAPERSIZE_TABLOID
>>> ws.page_setup.fitToHeight = 0
>>> ws.page_setup.fitToWidth = 1

55-60

60-63not affect the cell.

Các chỉ số 64 và 65 không thể được đặt và được dành riêng cho các màu tiền cảnh và màu nền tương ứng.

Áp dụng Styles¶

>>> from openpyxl.styles import colors
>>> from openpyxl.styles import Font, Color
>>> from openpyxl import Workbook
>>> wb = Workbook()
>>> ws = wb.active
>>>
>>> a1 = ws['A1']
>>> d4 = ws['D4']
>>> ft = Font(color="FF0000")
>>> a1.font = ft
>>> d4.font = ft
>>>
>>> a1.font.italic = True # is not allowed # doctest: +SKIP
>>>
>>> # If you want to change the color of a Font, you need to reassign it::
>>>
>>> a1.font = Font(color="FF0000", italic=True) # the change only affects A1
0

Phong cách được áp dụng trực tiếp cho các ô

>>> from openpyxl.styles import colors
>>> from openpyxl.styles import Font, Color
>>> from openpyxl import Workbook
>>> wb = Workbook()
>>> ws = wb.active
>>>
>>> a1 = ws['A1']
>>> d4 = ws['D4']
>>> ft = Font(color="FF0000")
>>> a1.font = ft
>>> d4.font = ft
>>>
>>> a1.font.italic = True # is not allowed # doctest: +SKIP
>>>
>>> # If you want to change the color of a Font, you need to reassign it::
>>>
>>> a1.font = Font(color="FF0000", italic=True) # the change only affects A1
1

Các kiểu cũng có thể được áp dụng cho các cột và hàng nhưng lưu ý rằng điều này chỉ áp dụng cho các ô được tạo (trong excel) sau khi tệp được đóng. Nếu bạn muốn áp dụng các kiểu cho toàn bộ hàng và cột thì bạn phải tự mình áp dụng kiểu cho mỗi ô. Đây là một hạn chế của định dạng tệp:

>>> from openpyxl.styles import colors
>>> from openpyxl.styles import Font, Color
>>> from openpyxl import Workbook
>>> wb = Workbook()
>>> ws = wb.active
>>>
>>> a1 = ws['A1']
>>> d4 = ws['D4']
>>> ft = Font(color="FF0000")
>>> a1.font = ft
>>> d4.font = ft
>>>
>>> a1.font.italic = True # is not allowed # doctest: +SKIP
>>>
>>> # If you want to change the color of a Font, you need to reassign it::
>>>
>>> a1.font = Font(color="FF0000", italic=True) # the change only affects A1
2

Kiểu dáng hợp nhất các tế bào

>>> from openpyxl.styles import colors
>>> from openpyxl.styles import Font, Color
>>> from openpyxl import Workbook
>>> wb = Workbook()
>>> ws = wb.active
>>>
>>> a1 = ws['A1']
>>> d4 = ws['D4']
>>> ft = Font(color="FF0000")
>>> a1.font = ft
>>> d4.font = ft
>>>
>>> a1.font.italic = True # is not allowed # doctest: +SKIP
>>>
>>> # If you want to change the color of a Font, you need to reassign it::
>>>
>>> a1.font = Font(color="FF0000", italic=True) # the change only affects A1
3

Các tế bào được hợp nhất hoạt động tương tự như các oject tế bào khác. Giá trị và định dạng của nó được xác định trong ô trên cùng bên trái của nó. Để thay đổi đường viền của toàn bộ ô hợp nhất, thay đổi đường viền của ô trên cùng bên trái của nó. Các định dạng được tạo ra cho mục đích viết.

Chỉnh sửa thiết lập trang

  • Styles được đặt tên

Trái ngược với các kiểu ô, các kiểu được đặt tên là có thể thay đổi. Chúng có ý nghĩa khi bạn muốn áp dụng định dạng cho nhiều ô khác nhau cùng một lúc. NB. Khi bạn đã gán một kiểu được đặt tên cho một ô, các thay đổi bổ sung cho kiểu dáng sẽ không ảnh hưởng đến ô.

  • Khi một kiểu được đặt tên đã được đăng ký với một sổ làm việc, nó có thể được gọi đơn giản bằng tên.
  • Tạo một phong cách được đặt tên
  • Khi một kiểu được đặt tên đã được tạo, nó có thể được đăng ký với sổ làm việc:
  • Nhưng các kiểu được đặt tên cũng sẽ được đăng ký tự động ngay lần đầu tiên chúng được gán cho một ô:
  • Sau khi đăng ký, gán kiểu chỉ bằng tên:

Sử dụng Stickin Styles¶

  • Các đặc điểm kỹ thuật bao gồm một số kiểu xây dựng cũng có thể được sử dụng. Thật không may, tên cho các phong cách này được lưu trữ trong các hình thức cục bộ của chúng. OpenPyXL sẽ chỉ nhận ra tên tiếng Anh và chỉ chính xác như được viết ở đây. Đây là như sau:
  • ’Bình thường # # giống như không có phong cách
  • Định dạng số Jo
  • Dấu phẩy
  • Dấu phẩy [0]

'Tiền tệ'

  • Tiền tệ [0]
  • 'Phần trăm'
  • Nhiều thông tin¶
  • 'Phép tính'
  • 'Tổng cộng'
  • 'Ghi chú'
  • Văn bản cảnh báo
  • Văn bản giải thích

Phong văn văn bản

  • 'Tiêu đề'
  • Tiêu đề 1
  • Tiêu đề 2
  • Tiêu đề 3
  • Tiêu đề 4
  • Siêu liên kết

Theo dõi siêu liên kết

  • Tế bào được liên kết
  • So sánh lor
  • 'Đầu vào'
  • Đầu ra
  • Kiểm tra ô
  • 'Tốt'
  • 'Xấu'
  • 'Trung tính'
  • Điểm nổi bật
  • ‘20 % - Accent3
  • ‘40 % - Accent3
  • ‘60 % - Accent3
  • Accent4
  • ‘20 % - Accent4
  • ‘40 % - Accent4
  • ‘60 % - Accent4
  • Accent5
  • ‘20 % - Accent5,
  • ‘40 % - Accent5
  • ‘60 % - Accent5
  • Accent6
  • ‘20 % - Accent6
  • ‘40 % - Accent6
  • ‘60 % - Accent6
  • Gandas

Để biết thêm thông tin về các kiểu xây dựng, vui lòng tham khảo

>>> from openpyxl.styles import colors
>>> from openpyxl.styles import Font, Color
>>> from openpyxl import Workbook
>>> wb = Workbook()
>>> ws = wb.active
>>>
>>> a1 = ws['A1']
>>> d4 = ws['D4']
>>> ft = Font(color="FF0000")
>>> a1.font = ft
>>> d4.font = ft
>>>
>>> a1.font.italic = True # is not allowed # doctest: +SKIP
>>>
>>> # If you want to change the color of a Font, you need to reassign it::
>>>
>>> a1.font = Font(color="FF0000", italic=True) # the change only affects A1
4

Làm cách nào để tạo kiểu cho một ô trong openpyxl?

Để thay đổi thuộc tính kiểu của ô, trước tiên bạn phải sao chép đối tượng kiểu hiện có từ ô và thay đổi giá trị của thuộc tính hoặc bạn phải tạo một đối tượng kiểu mới với các cài đặt mong muốn. Sau đó, hãy gán đối tượng kiểu mớiđến tế bào.Lưu câu trả lời này.copy the existing style object from the cell and change the value of the property or you have to create a new style object with the desired settings. Then, assign the new style object to the cell. Save this answer.

Làm cách nào để thay đổi màu của một ô trong excel bằng openpyxl?

OpenPyXL cung cấp cho bạn một lớp được gọi là mematurefill mà bạn có thể sử dụng để thay đổi màu nền của ô ...
patternType=None..
fgColor=Color().
bgColor=Color().
fill_type=None..
start_color=None..
end_color=None..

Làm cách nào để tô màu một ô trong Excel bằng Python?

Làm thế nào để thêm màu sắc cho các tế bào Excel bằng Python..
Example:.
Bước 1: Nhập thư viện và mô -đun OpenPyXL vào chương trình Python để thêm màu vào ô.....
Lưu ý: OpenPyxl.....
Bước2: Kết nối/Liên kết tệp sổ làm việc Excel của bạn và bảng làm việc của sổ làm việc tương ứng với chương trình Python ..