我目前正在使用openpyxl v2.2.2 for Python 2.7,我想将颜色设置为单元格.我使用了以下导入
import openpyxl,
from openpyxl import Workbook
from openpyxl.styles import Color, PatternFill, Font, Border
from openpyxl.styles import colors
from openpyxl.cell import Cell
Run Code Online (Sandbox Code Playgroud)
以下是我尝试使用的代码:
wb = openpyxl.Workbook()
ws = wb.active
redFill = PatternFill(start_color='FFFF0000',
end_color='FFFF0000',
fill_type='solid')
ws['A1'].style = redFill
Run Code Online (Sandbox Code Playgroud)
但是我收到以下错误:
Traceback (most recent call last)
self.font = value.font.copy()
AttributeError: 'PatternFill' object has no attribute 'font'
Run Code Online (Sandbox Code Playgroud)
关于如何使用openpyxl设置单元格A1(或任何其他单元格)的任何想法?
Cha*_*ark 41
我认为问题在于您正在尝试将填充对象分配给样式.
ws['A1'].fill = redFill 应该工作正常.
ldr*_*drg 12
样式的 API 再次更改。对我有用的是
my_red = openpyxl.styles.colors.Color(rgb='00FF0000')
my_fill = openpyxl.styles.fills.PatternFill(patternType='solid', fgColor=my_red)
cell.fill = my_fill
Run Code Online (Sandbox Code Playgroud)
颜色是 alpha RGB 十六进制颜色。您可以将其作为'rrggbb'默认 alpha 值 00传入或使用'aarrggbb'. openpyxl.styles.colors如果您需要快速获取一个颜色,则将一堆颜色定义为常量。
这对我有用.他们改变了一些东西,你在网上看到的大部分帮助都是我所看到的openpyxl库的旧版本.
# Change background color
xls_cell.style = Style(fill=PatternFill(patternType='solid',
fill_type='solid',
fgColor=Color('C4C4C4')))
Run Code Online (Sandbox Code Playgroud)
小智 6
在 python 3.x 中
wb = openpyxl.Workbook()
ws = wb.active
redFill = PatternFill(start_color='FFFF0000',
end_color='FFFF0000',
fill_type='solid')
ws['A1'].fill = redFill
Run Code Online (Sandbox Code Playgroud)
那个工作,但我不知道在 python 2.xi 希望工作只是把 ws['A1'].fill=redFill
小智 6
from openpyxl import Workbook, load_workbook
from openpyxl.styles import PatternFill
_file_name = "Test.xlsx"
_sheet_name = "Test_Sheet"
def new_workbook(_file_name, _sheet_name):
wb = Workbook() # Workbook Object
ws = wb.active # Gets the active worksheet
ws.title = _sheet_name # Name the active worksheet
# Writing the header columns
ws['A1'] = 'Name'
ws['B1'] = 'Class'
ws['C1'] = 'Section'
ws['D1'] = 'Marks'
ws['E1'] = 'Age'
col_range = ws.max_column # get max columns in the worksheet
# formatting the header columns, filling red color
for col in range(1, col_range + 1):
cell_header = ws.cell(1, col)
cell_header.fill = PatternFill(start_color='FF0000', end_color='FF0000', fill_type="solid") #used hex code for red color
wb.save(_file_name) # save the workbook
wb.close() # close the workbook
if __name__ == '__main__':
new_workbook(_file_name, _sheet_name)
Run Code Online (Sandbox Code Playgroud)

小智 5
我会为 Excel 做的是这样的:
from openpyxl import Workbook, load_workbook
from openpyxl.styles import PatternFill
wb = load_workbook("test.xlsx")
ws = wb.active
ws["A1"].fill = PatternFill("solid", start_color="FFA500")
Run Code Online (Sandbox Code Playgroud)
您可以将“A1”替换为另一个单元格,并且 start_color 必须是十六进制颜色。