xlsxwriter模块的使用
一、模块的安装
打开cmd输入pip install xlsxwriter安装即可
二、模块的使用
1、导入模块
import xlsxwriter
2、创建工作簿
创建结束后一定要保存!!workbook.close()
# filename是文件的名称,没有绝对路径就默认创建在此工作目录下
workbook = xlsxwriter.Workbook(filename='新建表格.xlsx')
'''
需要操作的事
'''
# 关闭并保存工作簿
workbook.close()
3、添加sheet表格
注:后面括号带上参数就是sheet名称,不带参数就默认以此创建sheet
# 依次添加sheet
worksheet1 = workbook.add_worksheet()
worksheet2 = workbook.add_worksheet('sheetname')
worksheet3 = workbook.add_worksheet()
执行结果
三、单元格的操作
1、添加数据(有两种方法)
添加不同的数据有很多种方法,但是可以直接统一使用write添加
行和列都是从0开始数的
①行和列的定位添加
write(row, col, content)
参数解析
row:行
col:列
content:加入的数据或者方法对象
# 向指定的sheet表格中添加数据
worksheet1.write(0, 0, '数据')
②字母数字的添加
write(‘letter_num’, content)
参数解析
letter_num:字母数字
content:加入的数据或者方法对象
# 向指定的sheet表格中添加数据
worksheet1.write('A1', '数据')
两种方法打印的结果都是这个
补充:部分数据类型
# write_string() 写入字符串类型数据
worksheet1.write_string(0, 0, "text")
# write_number() 写入数字类型数据
worksheet1.write_number(0, 1, 2.345)
# write_blank() 写入空类型数据
worksheet1.write_blank(0, 2, None)
# write_formula() 写入公式类型数据
worksheet1.write_formula(0, 3, "=SUM(B1:B5)")
# write_boolean() 写入逻辑类型数据
worksheet1.write_boolean(0, 4, True)
# write_url() 写入超链接类型数据
worksheet1.write_url(0, 5, "ftp://www.python.org/")
# write_datetime() 写入日期类型数据
worksheet1._write_datetime(0, 6, datetime.datetime.strptime('2018-1-31 10:00:00','%Y-%m-%d %H:%M:%S'),workbook.add_format({'num_format':'yyyy-m-dd'}))
执行结果
2、单元格的合并(有两种方法)
①坐标定位的合并方式
merge_range(row1, col1, row2, col2, content)
参数解析
row1:起始单元格的行
col1:起始单元格的列
row2:结束单元格的行
col2:结束单元格的列
content:写入数据或方法对象
# 合并单元格
worksheet1.merge_range(0, 0, 5, 2, '数据')
②字母数字的合并方式
merge_range(‘letter_num1:letter_num2’, content)
参数解析
letter_num1:起始单元格
letter_num2:结束单元格
content:写入数据或方法对象
# 合并单元格
worksheet1.merge_range('A1:C6', '数据')
两种合并方式打印出来的结果是一样的
3、单元格的样式
先在workbook中添加样式,然后在添加数据加上样式一览即可
merge_format = workbook.add_format({
'bold': True, # 字体加粗
'align': 'center', # 水平居中
'valign': 'vcenter', # 垂直居中
'border': 1, # 单元格边框宽度
'bg_color': '#F4B084', # 单元格背景颜色
'num_format': '0.00', # 格式化数据格式为小数点后两位
'font_size': 20, # 字体大小
'font_color': 'red' # 字体颜色
})
worksheet1.write(6, 6, 1.22221, merge_format)
worksheet1.merge_range(0, 0, 5, 2, '数据', merge_format)
打印结果
4、单元格的列宽和行高
列宽(有两种方法)
①坐标的定位
set_column(col1, col2, num)
参数解析
col1:起始列
col2:结束列
num:设置单元格的列宽
# 设置第1列的列宽为5
worksheet1.set_column(0, 5)
# 设置第2到3列的列宽为10
worksheet1.set_column(1, 2, 10)
# 设置第4到5列的列宽为20
worksheet1.set_column(3, 4, 20)
②字母的定位
set_column(‘letter1:letter2’, num)
参数解析
letter1:起始的字母
letter2:结束的字母
num:列宽
# 设置第A列的列宽为5
worksheet1.set_column('A:A', 5)
# 设置第B到C列的列宽为10
worksheet1.set_column('B:C', 10)
# 设置第D到F列的列宽为20
worksheet1.set_column('D:F', 20)
打印结果
行高
set_row(row, num)
参数解析
row:行
num:设置单元格的行高
# 设置第一行的行高为20
worksheet1.set_row(0, 20)
# 设置第二行的行高为20
worksheet1.set_row(1, 50)
打印结果
五、案例
创建xlsx表格,并创建名为’礼包’的sheet表格,在为礼包sheet中添加如下格式的数据(数据自拟,这是案例的数据,作为实战参考)
import xlsxwriter
# 在指定目录下创建一个xlsx文件
workbook = xlsxwriter.Workbook(r'C:\Users\Windows10\Desktop\新建表格.xlsx')
# 添加一个为礼包的sheet表格
worksheet = workbook.add_worksheet('礼包')
merge_format1 = workbook.add_format({
'align': 'center', # 水平居中
'valign': 'vcenter', # 垂直居中
})
merge_format2 = workbook.add_format({
'bg_color': 'red', # 背景颜色为红色
'align': 'center', # 水平居中
'valign': 'vcenter', # 垂直居中
})
merge_format3 = workbook.add_format({
'font_color': 'red', # 字体设置为红色
'align': 'center', # 水平居中
'valign': 'vcenter', # 垂直居中
})
merge_format4 = workbook.add_format({
'font_color': 'blue', # 字体设置为蓝色
'align': 'center', # 水平居中
'valign': 'vcenter', # 垂直居中
})
# 将第一列的列宽设为40
worksheet.set_column(0, 0, 40)
# 将第三列的列宽设为30
worksheet.set_column('C:C', 30)
# 将A1到A4的单元格合并并插入数据和数据的样式
worksheet.merge_range('A1:A4', '渡劫(送千万元宝)', merge_format1)
# 将A5到A8的单元格合并并插入数据和数据的样式
worksheet.merge_range(4, 0, 7, 0, '天域苍穹(送极品貂蝉)', merge_format1)
# 添加礼包名称
worksheet.write(0, 1, '新手礼包', merge_format1)
worksheet.write(1, 1, '特权礼包', merge_format1)
worksheet.write(2, 1, '预约礼包', merge_format1)
worksheet.write(5, 1, '专属礼包', merge_format1)
worksheet.write(6, 1, '上线礼包', merge_format1)
worksheet.write(7, 1, '首冲礼包', merge_format1)
# 将独家礼包合并并将背景标成红色
worksheet.merge_range(3, 1, 4, 1, '独家礼包', merge_format2)
# 添加礼包内容
for i in range(8):
if i < 4:
worksheet.write(i, 2, '礼包内容{}'.format(i+1), merge_format3)
continue
worksheet.write(i, 2, '礼包内容{}'.format(i+1), merge_format4)
workbook.close()