使用openpyxl创建并输出excel文件

使用openpyxl来输出excel文件的优势是可以像输出普通文本那样一行一行的进行添加
具体的使用方法如下

from openpyxl import Workbook
book = Workbook()
sheet1 = book.active
sheet1['A1'] = 'This is A1'
sheet1.title = 'sheet1'
sheet2 = book.create_sheet(title='sheet2')
content = [[ i for i in range(10)] for i in range(10)]
for i in content:
    sheet2.append(i)
book.save('openpyxl.xlsx')

最终的输出结果截图如下:
使用openpyxl输出excel文件
使用openpyxl输出excel文件

设置单元格的style

想要设置单元格的一些格式,比如,颜色,字体,粗细等可以通过openpyxl.styles来完成,一些设置如下

>>> 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)

这里我们试图将第一列的内容全部标记为红色,我们可以通过如下的代码实现:

for i in range(len(content)):
    astr = 'A{}'.format(i+1)
    sheet2[astr].font = Font(color=colors.RED)

需要注意的是,这一段代码要写在写入内容的后面,也就是在写入完成之后,保存excel表格之前来实现。更多的用法请见官方文档 https://openpyxl.readthedocs.io/en/stable/styles.html

相关文章: