Python XlsxWriter - 重要类


XlsxWriter 库由以下类组成。这些类中定义的所有方法都允许以编程方式对 XLSX 文件执行不同的操作。课程是 -

  • 作业本类
  • 工作表类
  • 格式类
  • 图表类
  • 图表类
  • 异常类

练习册班

这是 XlsxWriter 模块公开的主类,也是您需要直接实例化的唯一类。它代表写入磁盘上的 Excel 文件。

wb=xlsxwriter.Workbook('filename.xlsx')

Workbook 类定义了以下方法 -

先生编号 工作簿类别和说明
1

添加工作表()

将新工作表添加到工作簿。

2

添加格式()

用于创建新的 Format 对象,该对象用于将格式应用于单元格。

3

添加图表()

创建一个新的图表对象,可以通过 insert_chart() Worksheet 方法插入到工作表中

4

add_chartsheet()

将新图表表添加到工作簿。

5

关闭()

关闭 Workbook 对象并写入 XLSX 文件。

6

定义名称()

在工作簿中创建定义的名称以用作变量。

7

添加_vba_项目()

用于使用二进制 VBA 项目文件将宏或函数添加到工作簿。

8

工作表()

返回工作簿中的工作表列表。

工作表类

工作表类代表 Excel 工作表。此类的对象处理诸如将数据写入单元格或格式化工作表布局等操作。它是通过从Workbook()对象调用add_worksheet()方法创建的。

Worksheet 对象可以访问以下方法 -

写()

将通用数据写入工作表单元格。

参数-

  • row - 单元格行(零索引)。

  • col - 单元格列(零索引)。

  • * args - 传递给子方法的附加参数,例如数字、字符串和 cell_format。

返回-

  • 0 - 成功

  • -1 - 行或列超出工作表范围。

write_string()

将字符串写入由行和列指定的单元格。

参数-

  • row (int) - 单元格行(零索引)。

  • col (int) - 单元格列(零索引)。

  • string (string) - 要写入单元格的字符串。

  • cell_format (Format) - 可选格式对象。

返回-

  • 0 - 成功

  • -1 - 行或列超出工作表范围。

  • -2 - 字符串被截断为 32k 个字符。

写数字()

将数字类型写入由行和列指定的单元格。

参数-

  • row (int) - 单元格行(零索引)。

  • col (int) - 单元格列(零索引)。

  • string (string) - 要写入单元格的字符串。

  • cell_format (Format) - 可选格式对象。

返回-

  • 0 - 成功

  • -1 - 行或列超出工作表范围。

写公式()

将公式或函数写入由行和列指定的单元格。

参数-

  • row (int) - 单元格行(零索引)。

  • col (int) - 单元格列(零索引)。

  • 公式(字符串) -写入单元格的公式。

  • cell_format (Format) - 可选格式对象。

  • value - 可选结果。公式计算得出的值。

返回-

  • 0 - 成功

  • -1 - 行或列超出工作表范围。

插入图像()

用于将图像插入到工作表中。图像可以是 PNG、JPEG、GIF、BMP、WMF 或 EMF 格式。

参数-

  • row (int) - 单元格行(零索引)。

  • col (int) - 单元格列(零索引)。

  • filename - 图像文件名(如果需要,带有路径)。

返回-

  • 0 - 成功

  • -1 - 行或列超出工作表范围。

插入图表()

用于将图表插入工作表中。图表对象是通过 Workbook add_chart() 方法创建的。

参数-

  • row (int) - 单元格行(零索引)。

  • col (int) - 单元格列(零索引)。

  • 图表- 图表对象。

条件格式()

用于根据用户定义的条件向单元格或单元格区域添加格式设置。

参数-

  • first_row (int) - 范围的第一行。(全零索引)

  • first_col (int) - 范围的第一列。

  • last_row (int) - 范围的最后一行。

  • last_col (int) - 范围的最后一个列。

  • options (dict) - 条件格式选项。必须是包含描述条件格式的类型和样式的参数的字典

返回-

  • 0 - 成功

  • -1 - 行或列超出工作表范围。

  • -2 - 参数或选项不正确。

添加表()

用于将一系列单元格分组到 Excel 表格中。

参数-

  • first_row (int) - 范围的第一行。(全零索引)

  • first_col (int) - 范围的第一列。

  • last_row (int) - 范围的最后一行。

  • last_col (int) - 范围的最后一个列。

  • options (dict) - 表格式选项。

自动过滤器()

在工作表中设置自动筛选区域。它将下拉列表添加到二维工作表数据范围的标题中。用户可以根据简单的标准过滤数据。

参数-

  • first_row (int) - 范围的第一行。(全零索引)

  • first_col (int) - 范围的第一列。

  • last_row (int) - 范围的最后一行。

  • last_col (int) - 范围的最后一个列。

格式类

格式对象是通过调用工作簿add_format()方法创建的。该对象可用的方法和属性与字体、颜色、图案、边框、对齐方式和数字格式有关。

字体格式化方法和属性 -

方法名称 描述 财产
设置字体名称() 字体类型 '字体名称'
设置字体大小() 字体大小 '字体大小'
设置字体颜色() 字体颜色 '字体颜色'
设置粗体() 大胆的 '大胆的'
设置斜体() 斜体 ‘斜体’
设置下划线() 强调 '强调'
设置字体删除线() 三振 '字体删除线'
设置字体脚本() 上标/下标 '字体脚本'

对齐格式设置方法和属性

方法名称 描述 财产
设置对齐() 水平对齐 '对齐'
设置对齐() 垂直对齐 'valign'
设置旋转() 回转 '回转'
set_text_wrap() 文本换行 '文本换行'
设置阅读顺序() 阅读顺序 '阅读顺序'
set_text_justlast() 最后证明合理 'text_justlast'
set_center_across() 中心横跨 '中心_交叉'
设置缩进() 缩进 ‘缩进’
set_shrink() 缩小以适合 '收缩'

图表类

图表对象是通过指定图表类型的 Workbook 对象的add_chart()方法创建的。

chart = workbook.add_chart({'type': 'column'})

通过调用insert_chart()方法将图表对象插入到工作中。

worksheet.insert_chart('A7', chart)

XlxsWriter 支持以下图表类型 -

  • 区域- 创建区域(实心线)样式图表。

  • bar - 创建条形样式(转置直方图)图表。

  • - 创建柱形(直方图)图表。

  • line - 创建线条样式图表。

  • pie - 创建饼图样式图表。

  • 甜甜圈- 创建甜甜圈样式图表。

  • scatter - 创建散点样式图表。

  • stock - 创建股票样式图表。

  • 雷达- 创建雷达样式图表。

Chart 类定义了以下方法 -

添加系列(选项)

将数据系列添加到图表中。可以给出以下属性 -

  • 值、类别
  • 姓名
  • 线、边界
  • 填充、图案、渐变
  • 数据标签、点

设置x轴(选项)

设置图表 X 轴选项,包括

  • 名称、名称_字体
  • 数字字体、数字格式
  • 线条、填充、图案、渐变
  • 最小、最大
  • 位置轴
  • 标签位置、标签对齐
  • 日期轴、文本轴
  • 次要单位类型、主要单位类型

设置 y 轴(选项)

设置图表 Y 轴选项,包括 -

  • 名称、名称_字体
  • 数字字体、数字格式
  • 线条、填充、图案、渐变
  • 最小、最大
  • 位置轴
  • 标签位置、标签对齐
  • 日期轴、文本轴
  • 次要单位类型、主要单位类型

设置大小()

该方法用于设置图表的尺寸。可以通过设置宽度和高度或设置x_scaley_scale来修改图表的大小。

设置标题(选项)

设置图表标题选项。

参数-

  • options (dict) - 图表大小选项的字典。

  • name - 设置图表的名称(标题)。名称显示在图表上方。

  • name_font - 设置图表标题的字体属性。

  • 覆盖- 允许标题覆盖在图表上。

  • 布局- 以图表相对单位设置标题的 (x, y) 位置。

设置图例()

此方法使用以下属性格式化图表图例 -

  • 没有任何
  • 位置、字体、边框
  • 填充、图案、渐变

图表类

XLSX 文件中的图表表是仅包含图表而不包含其他数据的工作表。通过从 Workbook 对象调用add_chartsheet()方法来创建新的图表对象 -

chartsheet = workbook.add_chartsheet()

Chartsheet类的一些功能与数据工作表的功能类似,例如选项卡选择、页眉、页脚、边距和打印属性。但是,其主要目的是显示单个图表,而普通数据工作表可以包含一个或多个嵌入图表。

图表数据必须出现在单独的工作表中。因此,它总是使用set_chart()方法与至少一个数据工作表一起创建。

chartsheet = workbook.add_chartsheet()
chart = workbook.add_chart({'type': 'column'})
chartsheet.set_chart(chart)

请记住,图表表只能包含一个图表。

例子

以下代码将数据系列写入名为sheet1的工作表中,但打开一个新的图表工作表以根据sheet1中的数据添加柱形图。

import xlsxwriter

wb = xlsxwriter.Workbook('hello.xlsx')
worksheet = wb.add_worksheet()

cs = wb.add_chartsheet()
chart = wb.add_chart({'type': 'column'})

data = [
   [10, 20, 30, 40, 50],
   [20, 40, 60, 80, 100],
   [30, 60, 90, 120, 150],
]
worksheet.write_column('A1', data[0])
worksheet.write_column('B1', data[1])
worksheet.write_column('C1', data[2]) 

chart.add_series({'values': '=Sheet1!$A$1:$A$5'})
chart.add_series({'values': '=Sheet1!$B$1:$B$5'})
chart.add_series({'values': '=Sheet1!$C$1:$C$5'})

cs.set_chart(chart)
cs.activate()

wb.close()

输出

图表表类

异常类

XlsxWriter 识别各种运行时错误或异常,可以使用 Python 的错误处理技术捕获这些错误或异常,从而避免 Excel 文件损坏。XlsxWriter 中的 Exception 类如下 -

先生编号 异常类和描述
1

XlsxWriter异常

XlsxWriter 的基本异常。

2

Xlsx文件错误

所有文件相关错误的基本异常。

3

Xlsx输入错误

所有输入数据相关错误的基本异常。

4

文件创建错误

如果将 xlsx 文件写入磁盘或文件已在 Excel 中打开时出现文件权限错误或 IO 错误,则会发生此情况。

5

未定义图像大小

如果图像不包含高度或宽度信息,则使用insert_image()方法引发。在 Workbook close()期间引发异常。

6

不支持的图像格式

如果图像不是受支持的文件格式之一,则引发该错误:PNG、JPEG、GIF、BMP、WMF 或 EMF。

7

空图表系列

当将图表添加到没有数据系列的工作表时,会出现此异常。

8

无效的工作表名称

如果工作表名称太长或包含无效字符。

9

重复工作表名称

当工作表名称已存在时,会引发此异常。

文件创建错误异常

假设已使用 Excel 应用程序打开名为hello.xlsx的工作簿,则以下代码将引发FileCreateError -

import xlsxwriter
workbook = xlsxwriter.Workbook('hello.xlsx')
worksheet = workbook.add_worksheet()
workbook.close()

当该程序运行时,错误消息显示如下 -

PermissionError: [Errno 13] Permission denied: 'hello.xlsx'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
   File "hello.py", line 4, in <module>
   workbook.close()
File "e:\xlsxenv\lib\site-packages\xlsxwriter\workbook.py", line 326, in close
   raise FileCreateError(e)
xlsxwriter.exceptions.FileCreateError: [Errno 13] Permission denied: 'hello.xlsx'

处理异常

我们可以使用Python的异常处理机制来达到这个目的。

import xlsxwriter
try:
   workbook = xlsxwriter.Workbook('hello.xlsx')
   worksheet = workbook.add_worksheet()
   workbook.close()
except:
   print ("The file is already open")

现在将显示自定义错误消息。

(xlsxenv) E:\xlsxenv>python ex34.py
The file is already open

异常空图表系列

另一种情况是在图表中添加数据系列时引发异常。

import xlsxwriter
workbook = xlsxwriter.Workbook('hello.xlsx')
worksheet = workbook.add_worksheet()
chart = workbook.add_chart({'type': 'column'})
worksheet.insert_chart('A7', chart)
workbook.close()

这会导致 EmptyChartSeries 异常 -

xlsxwriter.exceptions.EmptyChartSeries: Chart1 must contain at least one data series.