我目前正在使用openpyxl v2.2.2 for Python 2.7,我想将颜色设置为单元格。我使用了以下导入
function
以下是我尝试使用的代码:
import openpyxl,
from openpyxl import Workbook
from openpyxl.styles import Color, PatternFill, Font, Border
from openpyxl.styles import colors
from openpyxl.cell import Cell
但是我收到以下错误:
wb = openpyxl.Workbook()
ws = wb.active
redFill = PatternFill(start_color='FFFF0000',
end_color='FFFF0000',
fill_type='solid')
ws['A1'].style = redFill
如何使用openpyxl设置单元格A1(或任何其他单元格)的颜色?
答案 0 :(得分:36)
我认为问题在于您尝试将填充对象分配给样式。
echo "<td bgcolor=.$cores[i].></td>";
应该可以正常使用。
答案 1 :(得分:6)
这对我有用。他们改变了一些东西,你在网上看到的大部分帮助都是我所看到的openpyxl库的旧版本。
# Change background color
xls_cell.style = Style(fill=PatternFill(patternType='solid',
fill_type='solid',
fgColor=Color('C4C4C4')))
答案 2 :(得分:3)
样式的API再次更改。对我有用的是
my_red = openpyxl.styles.colors.Color(rgb='00FF0000')
my_fill = openpyxl.styles.fills.PatternFill(patternType='solid', fgColor=my_red)
cell.fill = my_fill
颜色是alpha RGB十六进制颜色。您可以将其作为'rrggbb'
传递,默认字母为00,或者使用'aarrggbb'
指定Alpha。如果您需要快速抓取一堆颜色,则在openpyxl.styles.colors
中将一堆颜色定义为常量。
答案 3 :(得分:2)
在python 3.x中
wb = openpyxl.Workbook()
ws = wb.active
redFill = PatternFill(start_color='FFFF0000',
end_color='FFFF0000',
fill_type='solid')
ws['A1'].fill = redFill
那可以工作,但是我不知道在python 2.x中我希望能工作
只需将ws['A1'].fill=redFill
答案 4 :(得分:1)
要填充一系列行/列,请执行此操作
for cell in ws['A1:A100']:
cell[0].fill = redFill
填充一列的所有行
for cell in ws['A1:{}'.format(ws.max_row)]:
cell[0].fill = redFill
答案 5 :(得分:1)
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)