xlsxwriter基本操作

一、安装

pip install xlsxwriter

二、创建工作簿与工作表

1、创建工作簿对象

(1) 直接创建工作簿

语法: xlsxwriter.Workbook(filename=None, options=None)
功能描述: 直接创建工作簿
参数说明:
filename:文件名

(2)创建 Pandas Excel 编写器

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

2、创建工作表对象

(1)直接获取

工作簿对象.sheets[索引 / sheet名]

(2)新增工作表

语法: 工作簿对象.add_worksheet(name="Sheet1", worksheet_class=None)
功能描述: 新增工作表
参数说明:
name:工作表名

3、关闭工作簿

语法:工作簿对象.close()
功能描述: 关闭并保存工作簿

三、数据写入

1、单个数据写入数据

语法: 工作表对象.write(row, col[,data,cell_format]) | 工作表对象.write("A3"[,data,cell_format])
功能描述: 向指定单元格写入数据
参数说明:
row:行数,从0开始索引
col:列数,从0开始索引
data:写入的数据
cell_format:自定义样式对象

2、序列数据写入数据

语法: 工作表对象.write_row(row, col, data, cell_format=None) | 工作表对象.write_column(row, col, data, cell_format=None)
功能描述: 向指定行列写入序列数据
参数说明:
row:行数,从0开始索引
col:列数,从0开始索引
data:写入的数据
cell_format:自定义样式对象

四、表格样式

1、设置行高列宽

(1)设置行高

语法: 工作表对象.set_row(row, height=None, cell_format=None, options=None)
功能描述: 设置指定行的行高
参数说明:
row:行数,0开始索引
height:行高值
cell_format:自定义样式对象

(2)设置列宽

语法: 工作表对象.set_column(first_col, last_col, width=None, cell_format=None, options=None) | 工作表对象.set_column("列范围",宽度[,自定义格式])
功能描述: 设置指定范围的列宽
参数说明:
first_col:第一列
last_col:最后一列
width:列宽
cell_format:自定义样式对象

2、合并单元格

语法: 工作表对象.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:单元格格式对象

3、自定义样式对象

语法: 工作簿对象.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 右边框颜色

3、网格线

语法: 工作表对象.hide_gridlines(option=1)
功能描述: 设置打印或屏幕的网格线隐藏属性
参数说明:
0:不隐藏网格线
1:仅隐藏打印的网格线
2:隐藏屏幕和打印的网格线

五、图表

1、创建图表

(1)add_chart

语法: 工作簿对象.add_chart(option)
功能描述: 创建一个图表对象,在原表格上展示
参数说明:
option:图表类型和子类型选项,字典类型。{"type": "bar" | "column" | "line" |"pie" | "doughnut" | "scatter" | "stock" | "radar" }

bar:条形图
column:柱状图
line:折线图
pie:饼图
doughnut:圆环图
scatter:散点图
stock:股价图
radar:雷达图

(2)add_chartsheet

语法:工作簿对象.add_chartsheet(name=None, chartsheet_class=None)
功能描述: 创建一个图表对象,在新表格上展示
参数说明:
name:新表格的名称

2、添加数据

语法: 图表对象.add_series(options=None)
功能描述: 给图表对象添加数据
参数说明:
options:图表系列选项的字典

name:数据系列的名称 | 引用单元格值
categories:图表类别标签
values:该数据系列的值
values:选项为必须,其他选项为可选
overlap:两个数据系列之间重叠的距离,默认值为0
gap:在条形图/柱形图中数据系列之间的间隔,默认值为150
data_labels:添加数据标签( {'value':True,'font':{'name':'微软雅黑','size':9}}

3、设置图表大小

语法: 图表对象.set_size(options=None)
功能描述:
参数说明:

4、设置X轴

语法: 图表对象.set_y_axis(options)
功能描述:
参数说明:

5、设置Y轴

语法: 图表对象.set_x_axis(options)
功能描述:
参数说明:

6、VBA程序

1、添加VBA程序

语法: 工作簿对象.add_vba_project(vba_project, is_stream=False)
功能描述: 将vba程序二进制文件添加到Excel工作簿中,无返回
参数说明:
vba_project:vba程序二进制文件名。
is_stream:vba程序是内存中的字节流。

2、设置vab名称

语法: 工作簿对象.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()

效果图如下:
xlsxwriter基本操作_第1张图片

你可能感兴趣的:(Python,excel)