Python XlsxWriter 重要类


XlsxWriter 库包含以下类。这些类中定义的所有方法都允许以编程方式对 XLSX 文件执行不同的操作。班级是:

  • 工作簿类
  • 工作表类
  • 格式类
  • 图表类
  • 图表类
  • 异常类

工作簿类


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

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

Workbook 类定义了以下方法:

序号 工作簿类和描述
1

add_worksheet()

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

2

添加格式()

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

3

添加图表()

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

4

add_chartsheet()

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

5

close()

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

6

定义名称()

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

7

add_vba_project()

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

8

工作表()

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

工作表类


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

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

write()

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

参数

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

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

  • * args :传递给number、string、cell_format等子方法的附加args。

Returns

  • 0 : 成功

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

写字符串()

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

参数

  • 行(整数) : 单元格行(零索引)。

  • col(整数) : 单元格列(零索引)。

  • 字符串(字符串) : 写入单元格的字符串。

  • cell_format(格式) : 可选格式对象。

Returns

  • 0 : 成功

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

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

写数()

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

参数

  • 行(整数) : 单元格行(零索引)。

  • col(整数) : 单元格列(零索引)。

  • 字符串(字符串) : 写入单元格的字符串。

  • cell_format(格式) : 可选格式对象。

Returns

  • 0 : 成功

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

写公式()

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

参数

  • 行(整数) : 单元格行(零索引)。

  • col(整数) : 单元格列(零索引)。

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

  • cell_format(格式) : 可选格式对象。

  • value : 可选结果。计算公式时的值。

Returns

  • 0 : 成功

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

插入图像()

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

参数

  • 行(整数) : 单元格行(零索引)。

  • col(整数) : 单元格列(零索引)。

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

Returns

  • 0 : 成功

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

插入图表()

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

参数

  • 行(整数) : 单元格行(零索引)。

  • col(整数) : 单元格列(零索引)。

  • chart : 一个图表对象。

条件格式()

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

参数

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

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

  • 最后一行(整数) : 范围的最后一行。

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

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

Returns

  • 0 : 成功

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

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

添加表()

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

参数

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

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

  • 最后一行(整数) : 范围的最后一行。

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

  • 选项(字典) :表格格式选项。

自动过滤器()

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

参数

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

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

  • 最后一行(整数) : 范围的最后一行。

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

格式类


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

字体格式化方法和属性:

方法名称 描述 Property
set_font_name() 字体类型 '字体名称'
设置字体大小() 字体大小 '字体大小'
设置字体颜色() 字体颜色 '字体颜色'
set_bold() Bold 'bold'
set_italic() Italic 'italic'
设置下划线() 强调 '强调'
set_font_strikeout() 三振出局 'font_strikeout'
set_font_script() 超/下标 '字体脚本'

对齐格式方法和属性

方法名称 描述 Property
设置对齐() 水平对齐 'align'
设置对齐() 垂直对齐 'valign'
设置旋转() Rotation '回转'
set_text_wrap() 文本换行 '文本换行'
set_reading_order() 阅读顺序 '阅读顺序'
set_text_justlast() 最后证明 'text_justlast'
set_center_across() 居中 'center_across'
设置缩进() 缩进 'indent'
set_shrink() 缩小以适合 'shrink'

图表类


图表对象是通过 添加图表() 指定图表类型的 Workbook 对象的方法。

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

The chart 通过调用将对象插入到工作表中 插入图表() method.

worksheet.insert_chart('A7', chart)

XlxsWriter 支持以下图表类型:

  • area : 创建一个区域(实线)样式的图表。

  • bar : 创建条形(转置直方图)图表。

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

  • line : 创建线型图表。

  • pie : 创建饼图样式。

  • doughnut : 创建一个甜甜圈风格的图表。

  • scatter : 创建Scatter 样式图表。

  • stock : 创建股票风格图表。

  • radar : 创建雷达样式图表。

Chart 类定义了以下方法:

add_series(选项)

将数据系列添加到图表。可以给出以下性质:

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

set_x_axis(选项)

设置图表 X 轴选项,包括

  • 名称,name_font
  • num_font,num_format
  • 线条、填充、图案、渐变
  • min, max
  • 位置轴
  • 标签位置,标签对齐
  • 日期轴,文本轴
  • 次要单位类型,主要单位类型

set_y_axis(选项)

设置图表 Y 轴选项包括:

  • 名称,name_font
  • num_font,num_format
  • 线条、填充、图案、渐变
  • min, max
  • 位置轴
  • 标签位置,标签对齐
  • 日期轴,文本轴
  • 次要单位类型,主要单位类型

设置大小()

此方法用于设置图表的维度。可以通过设置宽度和高度或通过设置 x_scale and y_scale .

设置标题(选项)

设置图表标题选项。

参数

  • 选项(字典) : 图表大小选项字典。

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

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

  • overlay : 允许标题叠加在图表上。

  • layout : 以图表相对单位设置标题的(x, y) 位置。

set_legend()

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

  • none
  • 位置、字体、边框
  • 填充、图案、渐变

图表类


XLSX 文件中的图表表是只包含图表而没有其他数据的工作表。一个新的 图表表 对象是通过调用 add_chartsheet() 来自 Workbook 对象的方法:

chartsheet = workbook.add_chartsheet()

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

数据为 图表表 图表必须出现在单独的工作表上。因此,它始终与至少一个数据工作表一起创建,使用 设置图表() method.

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

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

例子


以下代码在工作表名称 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()

输出


ChartSheet Class

异常类


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

序号 异常类和描述
1

XlsxWriterException

XlsxWriter 的基本异常。

2

XlsxFileError

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

3

Xlsx输入Error

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

4

文件创建错误

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

5

未定义图像大小

提出与 插入图像() 方法,如果图像不包含高度或宽度信息。工作簿期间引发异常 close() .

6

不支持的图像格式

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

7

EmptyChartSeries

将图表添加到没有数据系列的工作表时会发生此异常。

8

无效的工作表名称

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

9

重复工作表名称

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

异常文件创建错误

假设一个名为 你好.xlsx 已使用 Excel 应用程序打开,则以下代码将引发 文件创建错误

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

异常 EmptyChartSeries

当图表添加数据系列时引发异常的另一种情况。

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.