# coding:utf-8
import xlrd
import xlwt
# 设置表格样式
def set_style(name, height, bold=False):
style = xlwt.XFStyle()
font = xlwt.Font()
font.name = name
font.bold = bold
font.color_index = 4
font.height = height
style.font = font
return style
def add_sheet(excel_obj, sheet_name):
"""
增加sheet页
:param excel_obj: 创建的excel文件对象
:param sheet_name: sheet名称
:return: new_sheet 返回新创建的sheet对象
"""
# cell_overwrite_ok=True表示一个单元格可以被多次覆盖写入
new_sheet = excel_obj.add_sheet(sheet_name, cell_overwrite_ok=True)
return new_sheet
def add_sheet_row(sheet_obj, fieldnames, row_index=0):
"""
在sheet中写入一行内容
:param sheet_obj: sheet对象
:param fieldnames: 要写入的内容列表,列表中每个元素写入一个单元格
:param row_index: 要写入的行号,默认写入第0行
:return:
"""
for i in range(len(fieldnames)):
# 在第0行,第i列,以set_style设置的格式,写入fieldnames[i]中的内容
sheet_obj.write(row_index, i, fieldnames[i], set_style('Times New Roman', 220, True))
def add_sheet_col(sheet_obj, fieldnames, col_index=0, row_index=1):
"""
在sheet的某一列中写入内容
:param sheet_obj: sheet对象
:param fieldnames: 要写入的内容列表,列表中每个元素写入一个单元格
:param col_index: 要写入的列编号,默认滴入第0列
:param row_index: 从row_index行开始写入,默认从第一行开始写,第0行是标题
:return:
"""
for i in range(len(fieldnames)):
sheet_obj.write(row_index + i, col_index, fieldnames[i], set_style('Times New Roman', 220, True))
def add_sheet_cell(sheet_obj, cell, row_index, col_index):
"""
在sheet的某个单元格中写入内容
:param sheet_obj: sheet对象
:param cell: 待写入的内容
:param row_index: 单元格的行号
:param col_index: 单元格的列号
:return:
"""
sheet_obj.write(row_index, col_index, cell)
def merge_cell(sheet_obj, row1_index, row2_index, col1_index, col2_index, cell):
"""
合并单元格
:param sheet_obj:sheet对象
:param row1_index:起始单元格的行号
:param row2_index:截止单元格的行号
:param col1_index:起始单元格的列号
:param col2_index:截止单元格的列号
:param cell: 单元格合并后写入的内容
:return:
"""
sheet_obj.write_merge(row1_index, row2_index, col1_index, col2_index, label=cell)
# 写Excel
def write_excel():
f = xlwt.Workbook()
sheet1 = add_sheet(f, '学生')
row0 = ["姓名", "年龄", "出生日期", "爱好"]
colum0 = ["张三", "李四", "恋习Python", "小明", "小红", "无名"]
# 写入一行(属性列,如姓名、年龄、性别)
add_sheet_row(sheet1, row0)
# 写入一列
add_sheet_col(sheet1, colum0, 0, 1)
# 写入一个单元格
add_sheet_cell(sheet1, '2006/12/12', 1, 2)
# 合并单元格
merge_cell(sheet1, 6, 6, 1, 3, '未知') # 合并行单元格,合并第6行的1/2/3三个单元格
merge_cell(sheet1, 1, 2, 3, 3, '打游戏') # 合并列单元格,合并第1/2行的第3个单元格
merge_cell(sheet1, 4, 5, 3, 3, '打篮球')
f.save('./data/test_write.xls')
if __name__ == '__main__':
write_excel()