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() |
将通用数据写入工作表单元格。 参数 :
Returns :
|
写字符串() |
将字符串写入由行和列指定的单元格。 参数 :
Returns :
|
写数() |
将数值类型写入由行和列指定的单元格。 参数 :
Returns :
|
写公式() |
将公式或函数写入由行和列指定的单元格。 参数 :
Returns :
|
插入图像() |
用于将图像插入工作表。图像可以是 PNG、JPEG、GIF、BMP、WMF 或 EMF 格式。 参数 :
Returns :
|
插入图表() |
用于将图表插入工作表。图表对象是通过 Workbook add_chart() 方法创建的。 参数 :
|
条件格式() |
用于根据用户定义的条件向单元格或单元格区域添加格式。 参数 :
Returns :
|
添加表() |
用于将一系列单元格分组到 Excel 表格中。 参数 :
|
自动过滤器() |
在工作表中设置自动筛选区域。它将下拉列表添加到二维工作表数据范围的标题中。用户可以根据简单的标准过滤数据。 参数 :
|
格式类
通过调用工作簿创建格式对象 添加格式() 方法。此对象可用的方法和属性与字体、颜色、图案、边框、对齐方式和数字格式有关。
字体格式化方法和属性:
方法名称 | 描述 | 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(选项) |
将数据系列添加到图表。可以给出以下性质:
|
set_x_axis(选项) |
设置图表 X 轴选项,包括
|
set_y_axis(选项) |
设置图表 Y 轴选项包括:
|
设置大小() |
此方法用于设置图表的维度。可以通过设置宽度和高度或通过设置 x_scale and y_scale . |
设置标题(选项) |
设置图表标题选项。 参数 :
|
set_legend() |
此方法使用以下属性格式化图表图例:
|
图表类
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()
输出
异常类
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.