Python XlsxWriter 重要的类

Python XlsxWriter 重要的类

XlsxWriter库包括以下类。这些类中定义的所有方法允许以编程方式在XLSX文件上进行不同的操作。这些类有:

  • Workbook类
  • Worksheet类
  • Format类
  • Chart类
  • Chartsheet类
  • Exception类

Workbook类

这是XlsxWriter模块提供的主要类,它是唯一需要直接实例化的类。它表示Excel文件在磁盘上的写入情况。

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

Workbook类定义了以下方法−

编号 Workbook 类和描述
1 add_worksheet() 将新的工作表添加到工作簿。
2 add_format() 用于创建新的格式对象,用于对单元格应用格式。
3 add_chart() 创建一个新的图表对象,可以通过 insert_chart() 工作表方法插入到工作表中。
4 add_chartsheet() 在工作簿中添加新的图表工作表。
5 close() 关闭 Workbook 对象并将 XLSX 文件写入。
6 define_name() 在工作簿中创建一个定义的名称,用作变量。
7 add_vba_project() 用于使用二进制 VBA 项目文件向工作簿添加宏或函数。
8 worksheets() 返回工作簿中的工作表列表。

Worksheet类

Worksheet 类表示一个 Excel 工作表。该类的对象处理诸如向单元格写入数据或格式化工作表布局等操作。可以通过从 Workbook() 对象调用 add_worksheet() 方法来创建该对象。

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

write(): 将通用数据写入工作表单元格。

参数

  • row − 单元格行(从零开始计数)。
  • col − 单元格列(从零开始计数)。
  • *args − 传递给子方法(如number、string和cell_format)的附加参数。

返回值

  • 0 − 成功
  • -1 − 行或列超出工作表范围。

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

参数

  • row (int)
  • cell_row (int) - 单元格的行数(从零开始计数)。
  • cell_column (int) - 单元格的列数(从零开始计数)。
  • string (string) - 要写入单元格的字符串。
  • cell_format (Format) - 可选的格式对象。

返回值 -

  • 0 - 成功。
  • -1 - 行或列超出工作表范围。
  • -2 - 字符串被截断为32k个字符。

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

参数 -
* row (int) - 单元格的行数(从零开始计数)。
* col (int) - 单元格列(从零开始计数)。
* string (string) - 要写入单元格的字符串。
* cell_format (Format) - 可选的格式对象。

返回值 -
* 0 - 成功
* -1 - 行或列超出工作表边界。

write_formula() : 向由行和列指定的单元格中写入公式或函数。

参数 -
* row (int) - 单元格行(从零开始计数)。
* col (int) - 单元格列(从零开始计数)。
* formula (string) - 要写入的公式。
* Formula to write to cell.
* cell_format (Format) - 可选的格式对象。
* value - 可选的结果。如果计算出公式,则为结果值。

返回值 -
* 0 - 成功
* -1 - 行或列超出工作表范围。

insert_image() :用于在工作表中插入图像。图像可以是PNG、JPEG、GIF、BMP、WMF或EMF格式。

参数 -
* row (int) - 单元格的行数(以零为索引)。
* col (int) - 单元格的列数(以零为索引)。
* filename - 图像文件的文件名。图片文件名(如有需要,包括路径)。

返回值
* 0 - 成功。
* -1 - 行或列超出工作表边界。

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

参数
* row (int) - 单元格行号(从0开始计数)。
* col (int) - 单元格列号(从0开始计数)。
* chart - 图表对象。

conditional_format() 用于根据用户定义的条件,向单元格或一组单元格添加格式。

参数
* first_row (int) − 范围的第一行。(全部从零开始计数)
* first_col (int) − 范围的第一列。
* last_row (int) − 范围的最后一行。
* last_col (int) − 范围的最后一列。
* options (dict) − 条件格式选项。必须是包含描述条件格式类型和样式的参数的字典。

返回值
* 0 − 成功
* -1 − 行或列超出工作表范围。
* -2 − 不正确的参数或选项。

add_table() : 用于将一系列单元格分组为Excel表格。

参数
* first_row(int) — 范围的第一行。(从零开始索引)
* first_col(int) — 范围的第一列。
* last_row(int) — 范围的最后一行。
* last_col(int) — 范围的最后一列。
* options(dict) — 表格格式设置选项。

autofilter(): 设置工作表中的自动筛选区域。它在工作表数据的2D范围的标题中添加下拉列表。用户可以根据简单的条件筛选数据。

参数
* first_row (int) − 表示范围的第一行。(全部从零开始计数)
* first_col (int) − 表示范围的第一列。
* last_row (int) − 表示范围的最后一行。
* last_col (int) − 表示范围的最后一列。

Format类

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

字体格式化方法和属性 −

方法名 描述 属性
set_font_name() Font type ‘font_name’
set_font_size() Font size ‘font_size’
set_font_color() Font color ‘font_color’
set_bold() Bold ‘bold’
set_italic() Italic ‘italic’
set_underline() Underline ‘underline’
set_font_strikeout() Strikeout ‘font_strikeout’
set_font_script() Super/Subscript ‘font_script’

对齐格式化方法和属性

方法名 描述 属性
set_align() Horizontal align ‘align’
set_align() Vertical align ‘valign’
set_rotation() Rotation ‘rotation’
set_text_wrap() Text wrap ‘text_wrap’
set_reading_order() Reading order ‘reading_order’
set_text_justlast() Justify last ‘text_justlast’
set_center_across() Center across ‘center_across’
set_indent() Indentation ‘indent’
set_shrink() Shrink to fit ‘shrink’

Chart类

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

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

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

worksheet.insert_chart('A7', chart)

XlxsWriter支持以下图表类型−

  • area − 创建面积(填充线)风格的图表。

  • bar − 创建条形(转置直方)风格的图表。

  • column − 创建柱形(直方)风格的图表。

  • line − 创建线形风格的图表。

  • pie − 创建饼状风格的图表。

  • doughnut − 创建圆环风格的图表。

  • scatter − 创建散点风格的图表。

  • stock − 创建股票风格的图表。

  • radar − 创建雷达风格的图表。

Chart类定义了以下方法−

add_series(options): 向图表添加一个数据系列。可以给定以下属性:-

  • Values, categories
  • name
  • line, border
  • fill , pattern , gradient
  • data_labels, points

set_x_axis(options): 设置图表的X轴选项,包括:-

  • name, name_font
  • num_font, num_format
  • line, fill, pattern, gradient
  • min, max
  • position_axis
  • label_position, label_align
  • date_axis, text_axis
  • minor_unit_type, major_unit_type

set_y_axis(options): 设置图表的Y轴选项,包括:-

  • name, name_font
  • num_font, num_format
  • line, fill, pattern, gradient
  • min, max
  • position_axis
  • label_position, label_align
  • date_axis, text_axis
  • minor_unit_type, major_unit_type

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

set_title(options): 设置图表标题选项。

参数 -
* options(dict) - 图表大小选项的字典。
* name - 设置图表的名称(标题)。名称显示在图表上方。
* name_font - 设置图表标题的字体属性。
* overlay - 允许标题叠加在图表上。
* layout - 在图表相对单位中设置标题的(x,y)位置。

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

  • none
  • position, font, border
  • fill, pattern, gradient

Chartsheet类

在XLSX文件中,图表表单是仅包含图表而没有其他数据的工作表。通过从Workbook对象调用add_chartsheet()方法来创建一个新的 chartsheet 对象。

chartsheet = workbook.add_chartsheet()

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

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

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

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

示例

以下代码将数据系列写入名为sheet1的工作表,但是会打开一个新的Chartsheet来添加基于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!A1:A5'})
chart.add_series({'values': '=Sheet1!B1:B5'})
chart.add_series({'values': '=Sheet1!C1:C5'})

cs.set_chart(chart)
cs.activate()

wb.close()

输出

Python XlsxWriter 重要的类

异常类

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

编号 异常类及描述
1 XlsxWriterException XlsxWriter的基础异常类。
2 XlsxFileError 所有文件相关错误的基础异常类。
3 XlsxInputError 所有输入数据相关错误的基础异常类。
4 FileCreateError 在将xlsx文件写入磁盘时,如果存在文件权限错误或IO错误,或者文件已在Excel中打开,则会发生此异常。
5 UndefinedImageSize 如果图像没有包含高度或宽度信息,则在调用 insert_image() 方法时引发。该异常在Workbook的 close() 方法期间引发。
6 UnsupportedImageFormat 如果图像不是支持的文件格式之一(PNG、JPEG、GIF、BMP、WMF或EMF),则会引发此异常。
7 EmptyChartSeries 当向工作表添加图表且没有数据系列时,会发生该异常。
8 InvalidWorksheetName 如果工作表名称过长或包含无效字符,则会引发此异常。
9 DuplicateWorksheetName 当工作表名称已存在时,会引发此异常。

文件创建错误 FileCreateError

假设使用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

异常 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.

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程