Python XlsxWriter - 重要类
XlsxWriter 库由以下类组成。 这些类中定义的所有方法都允许以编程方式对 XLSX 文件执行不同的操作。 这些类是 −
- Workbook 类
- Worksheet 类
- Format 类
- Chart 类
- Chartsheet 类
- Exception 类
Workbook 类
这是 XlsxWriter 模块公开的主类,也是您需要直接实例化的唯一类。 它表示写入磁盘上的 Excel 文件。
wb=xlsxwriter.Workbook('filename.xlsx')
Workbook类定义了以下方法 −
Sr.No | Workbook 类 & 描述 |
---|---|
1 | add_worksheet() 将新工作表添加到工作簿。 |
2 | add_format() 用于创建用于将格式应用到单元格的新 Format 对象。 |
3 | add_chart() 创建一个新的图表对象,可以通过 insert_chart() Worksheet 方法插入到工作表中 |
4 | add_chartsheet() 将新的图表工作表添加到工作簿。 |
5 | close() 关闭工作簿对象并写入 XLSX 文件。 |
6 | define_name() 在工作簿中创建定义的名称以用作变量。 |
7 | add_vba_project() 用于使用二进制 VBA 项目文件向工作簿添加宏或函数。 |
8 | worksheets() 返回工作簿中工作表的列表。 |
Worksheet 类
工作表类表示 Excel 工作表。 此类的对象处理诸如将数据写入单元格或格式化工作表布局等操作。 它是通过从 Workbook() 对象调用 add_worksheet() 方法创建的。
Worksheet 对象可以访问以下方法 −
write() |
将通用数据写入工作表单元格。 参数 −
返回 −
|
write_string() |
将字符串写入由行和列指定的单元格。 参数 −
返回 −
|
write_number() |
将数字类型写入由行和列指定的单元格。 参数 −
返回 −
|
write_formula() |
将公式或函数写入由行和列指定的单元格。 参数 −
返回 −
|
insert_image() |
用于将图像插入到工作表中。 图像可以是 PNG、JPEG、GIF、BMP、WMF 或 EMF 格式。 参数 −
返回 −
|
insert_chart() |
用于将图表插入到工作表中。 图表对象是通过 Workbook add_chart() 方法创建的。 参数 −
|
conditional_format() |
用于根据用户定义的条件向单元格或单元格区域添加格式。 参数 −
返回 −
|
add_table() |
用于将一系列单元格分组到 Excel 表格中。 参数 −
|
autofilter() |
在工作表中设置自动筛选区域。 它将下拉列表添加到二维工作表数据范围的标题中。 用户可以根据简单的条件过滤数据。 参数 −
|
Format 类
格式对象是通过调用工作簿add_format() 方法创建的。 此对象可用的方法和属性与字体、颜色、图案、边框、对齐方式和数字格式有关。
字体格式化方法和属性 −
方法名称 | 说明 | 属性 |
---|---|---|
set_font_name() | 字体类型 | 'font_name' |
set_font_size() | 字体大小 | 'font_size' |
set_font_color() | 字体颜色 | 'font_color' |
set_bold() | 粗体 | 'bold' |
set_italic() | 斜体 | 'italic' |
set_underline() | 下划线 | 'underline' |
set_font_strikeout() | Strikeout | 'font_strikeout' |
set_font_script() | 上标/下标 | 'font_script' |
对齐格式化方法和属性
方法名称 | 说明 | 属性 |
---|---|---|
set_align() | 水平对齐 | 'align' |
set_align() | 垂直对齐 | 'valign' |
set_rotation() | 旋转 | 'rotation' |
set_text_wrap() | 文本换行 | 'text_wrap' |
set_reading_order() | 阅读顺序 | 'reading_order' |
set_text_justlast() | 最后对齐 | 'text_justlast' |
set_center_across() | 居中 | 'center_across' |
set_indent() | 缩进 | 'indent' |
set_shrink() | 缩小以适合 | 'shrink' |
Chart 类
图表对象是通过指定图表类型的 Workbook 对象的 add_chart() 方法创建的。
chart = workbook.add_chart({'type': 'column'})
通过调用insert_chart() 方法将图表 对象插入到工作表中。
worksheet.insert_chart('A7', chart)
XlxsWriter 支持以下图表类型 −
area − 创建面积(实线)样式图表。
bar − 创建条形图(转置直方图)图表。
column − 创建柱形(直方图)图表。
line − 创建线条样式图表。
pie − 创建饼图样式图表。
doughnut − 创建圆环样式图表。
scatter − 创建散点样式图表。
stock − 创建股票样式图表。
radar − 创建雷达样式图表。
Chart类定义了以下方法 −
add_series(options) |
将数据系列添加到图表。 可以给出以下属性 −
|
set_x_axis(options) |
设置图表X轴选项包括
|
set_y_axis(options) |
设置图表 Y 轴选项包括 −
|
set_size() |
该方法用于设置图表的维度。 可以通过设置宽度和高度或设置 x_scale 和 y_scale 来修改图表的大小。 |
set_title(options) |
设置图表标题选项。 参数 −
|
set_legend() |
此方法使用以下属性格式化图表图例 −
|
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 中写入数据系列,但打开一个新的图表表以根据 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类如下 −
Sr.No | 异常类 & 描述 |
---|---|
1 |
XlsxWriterException XlsxWriter 的基本异常。 |
2 | XlsxFileError 所有文件相关错误的基本异常。 |
3 | XlsxInputError 所有输入数据相关错误的基本异常。 |
4 | FileCreateError 在将 xlsx 文件写入磁盘或文件已在 Excel 中打开时出现文件权限错误或 IO 错误时发生。 |
5 | UndefinedImageSize 如果图像不包含高度或宽度信息,则使用 insert_image() 方法引发。 在工作簿 close() 期间引发异常。 |
6 | UnsupportedImageFormat 如果图像不是受支持的文件格式之一,则引发:PNG、JPEG、GIF、BMP、WMF 或 EMF。 |
7 | EmptyChartSeries 将图表添加到没有数据系列的工作表时会发生此异常。 |
8 | InvalidWorksheetName 如果工作表名称太长或包含无效字符。 |
9 | DuplicateWorksheetName 当工作表名称已经存在时会引发此异常。 |
异常 FileCreateError
假设名为 hello.xlsx 的工作簿已使用 Excel 应用程序打开,则以下代码将引发 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.