pip install xlsxwriter
语法:
xlsxwriter.Workbook(filename=None, options=None)
功能描述: 直接创建工作簿
参数说明:
filename:文件名
pandas.ExcelWriter('xxx.xlsx', engine='xlsxwriter').book
使用xlsxwriter引擎进行Excel文件的创建,然后使用ExcelWriter类创建了一个writer对象
或者
with pd.ExcelWriter('xxx.xlsx', engine='xlsxwriter') as writer:
df1.to_excel(writer, sheet_name='Students')
writer.book
工作簿对象.sheets[索引 / sheet名]
语法:
工作簿对象.add_worksheet(name="Sheet1", worksheet_class=None)
功能描述: 新增工作表
参数说明:
name:工作表名
语法:
工作簿对象.close()
功能描述: 关闭并保存工作簿
语法:
工作表对象.write(row, col[,data,cell_format])
|工作表对象.write("A3"[,data,cell_format])
功能描述: 向指定单元格写入数据
参数说明:
row:行数,从0开始索引
col:列数,从0开始索引
data:写入的数据
cell_format:自定义样式对象
语法:
工作表对象.write_row(row, col, data, cell_format=None)
|工作表对象.write_column(row, col, data, cell_format=None)
功能描述: 向指定行列写入序列数据
参数说明:
row:行数,从0开始索引
col:列数,从0开始索引
data:写入的数据
cell_format:自定义样式对象
语法:
工作表对象.set_row(row, height=None, cell_format=None, options=None)
功能描述: 设置指定行的行高
参数说明:
row:行数,0开始索引
height:行高值
cell_format:自定义样式对象
语法:
工作表对象.set_column(first_col, last_col, width=None, cell_format=None, options=None)
|工作表对象.set_column("列范围",宽度[,自定义格式])
功能描述: 设置指定范围的列宽
参数说明:
first_col:第一列
last_col:最后一列
width:列宽
cell_format:自定义样式对象
语法:
工作表对象.merge_range(first_row, first_col, last_row, last_col, data, cell_format=None)
|工作表对象.merge_range('合并单元格范围'[,填入内容,自定义样式对象])
功能描述: 合并单元格并写入内容
参数说明:
first_row:单元格范围的第一行(0开始索引)
first_col:单元格范围的第一列
last_row:单元格范围的最后一行(0开始索引)
last_col:单元格范围的最后一列
data:单元格数据
cell_format:单元格格式对象
语法:
工作簿对象.add_format(properties=None)
功能描述: 创建样式格式对象
参数说明:
properties:格式属性,字典类型
样式属性名 | 属性值 | 描述说明 |
---|---|---|
font_color / color | #xxxxxx | 字体颜色 |
bold | True / False | 字体粗细 |
font_size | 数值 | 字体大小 |
font_name | 字体 | |
bg_color | #xxxxxx | 单元格背景色 |
align | left / right / center | 水平对齐方式 |
valign | vcenter | 垂直对齐方式 |
top | 数值 | 上边框 |
left | 数值 | 左边框 |
right | 数值 | 右边框 |
bottom | 数值 | 下边框 |
top_color | #xxxxxx | 上边框颜色 |
left_color | #xxxxxx | 左边框颜色 |
buottom_color | #xxxxxx | 上边框颜色 |
right_color | #xxxxxx | 右边框颜色 |
语法:
工作表对象.hide_gridlines(option=1)
功能描述: 设置打印或屏幕的网格线隐藏属性
参数说明:
0:不隐藏网格线
1:仅隐藏打印的网格线
2:隐藏屏幕和打印的网格线
语法:
工作簿对象.add_chart(option)
功能描述: 创建一个图表对象,在原表格上展示
参数说明:
option:图表类型和子类型选项,字典类型。{"type": "bar" | "column" | "line" |"pie" | "doughnut" | "scatter" | "stock" | "radar" }
bar:条形图
column:柱状图
line:折线图
pie:饼图
doughnut:圆环图
scatter:散点图
stock:股价图
radar:雷达图
语法:
工作簿对象.add_chartsheet(name=None, chartsheet_class=None)
功能描述: 创建一个图表对象,在新表格上展示
参数说明:
name:新表格的名称
语法:
图表对象.add_series(options=None)
功能描述: 给图表对象添加数据
参数说明:
options:图表系列选项的字典name:数据系列的名称 | 引用单元格值
categories:图表类别标签
values:该数据系列的值
values:选项为必须,其他选项为可选
overlap:两个数据系列之间重叠的距离,默认值为0
gap:在条形图/柱形图中数据系列之间的间隔,默认值为150
data_labels:添加数据标签({'value':True,'font':{'name':'微软雅黑','size':9}}
)
语法:
图表对象.set_size(options=None)
功能描述:
参数说明:
语法:
图表对象.set_y_axis(options)
功能描述:
参数说明:
语法:
图表对象.set_x_axis(options)
功能描述:
参数说明:
语法:
工作簿对象.add_vba_project(vba_project, is_stream=False
)
功能描述: 将vba程序二进制文件添加到Excel工作簿中,无返回
参数说明:
vba_project:vba程序二进制文件名。
is_stream:vba程序是内存中的字节流。
语法:
工作簿对象.set_vba_name( name=None)
功能描述: 设置工作簿的VBA名称。默认情况下,工作簿在VBA中称为ThisWorkbook。
参数说明:
name: VBA名称
实战代码:
def to_xls(data,file_name,key1) :
data["column_name"]=range(1,len(data)+1)
workbook = xlsxwriter.Workbook(file_name) # 创建excel表格
worksheet = workbook.add_worksheet()
title_format_first= workbook.add_format({'font_color': '#ffffff','bg_color':'#1C981C','font_size':18,'bold': True,'font_name':'Microsoft Yahei','align': 'center','valign': 'vcenter'})
worksheet.set_row(0,30) #设置行高
worksheet.merge_range('A1:F1','xxxx', title_format_first) # 合并单元格写入大标题
worksheet.set_column("B:B",30) # 设置列宽
worksheet.set_column("C:C",15)
worksheet.set_column("D:D",24)
worksheet.set_column("E:E",15)
worksheet.set_column("F:F",25)
worksheet.set_column("G:G",15)
worksheet.set_column("H:J",25)
content="xxxx"+key1+"xxx数据"
worksheet.merge_range("G1:J1",content, title_format_first) # 合并单元格写入大标题
title_format_second=workbook.add_format({'font_color': '#ffffff','bg_color':'#1C981C','font_size':12,'bold': True,'font_name':'Microsoft Yahei','top':1,'bottom':1,'right':1,'top_color':'#1C981C','bottom_color':'#1C981C','right_color':'#ffffff','align': 'center','valign': 'vcenter'})
#worksheet.set_row(1,20,title_format_second)
lie=["A","B","C","D","E","F","G","H","I","J"]
for i in range(len(lie)):
worksheet.write(lie[i]+"2", data.columns[i],title_format_second) # 写入小标题
data_format_odd=workbook.add_format({'bg_color':'#97C890','font_size':10,'top':1,'bottom':1,'right':1,'top_color':'#1C981C','bottom_color':'#1C981C','right_color':'#ffffff','align': 'center','valign': 'vcenter'})
data_format_even=workbook.add_format({'font_size':10,'top':1,'bottom':1,'right':1,'top_color':'#1C981C','bottom_color':'#1C981C','right_color':'#ffffff','align': 'center','valign': 'vcenter'})
# 写入主体数据
data_list=data.fillna(value="").values # 将传入的dataframe数据转换为列表
for i in range(len(data_list)):
for j in range(len(data_list[0])):
if i%2==0: # 写入数据,并通过判断条件控制奇偶数的格式样式
worksheet.write(lie[j]+str(i+3), data_list[i][j],data_format_even)
else:
worksheet.write(lie[j]+str(i+3), data_list[i][j],data_format_odd)
workbook.close()