8 Workbook 类
Workbook类是XlsxWriter模块的主要类,并且是唯一需要直接实例化的类。
Workbook类表示整个电子表格,就像在Excel中看到的那样,它在内部表示在磁盘上写入的Excel文件。
构造函数
Workbook
(filename[, options]) 创建一个新的XlsxWriter工作簿对象。
参数:
- filename(字符串)——表示需要创建的Excel的文件名。
- options(字典)——工作簿的参数选项。
返回值:一个Workbook对象
Workbook()
构造函数通过接受一个给定的文件名来创建一个新的Excel工作簿。
import xlsxwriter
workbook = xlsxwriter.Workbook('filename.xlsx')
worksheet = workbook.add_worksheet()
worksheet.write(0, 0, 'Hello Excel')
workbook.close()
这个构造函数的选项有:
constant_memory:减少内存的使用量,以便可以写入大文件:
workbook = xlsxwriter.Workbook(filename, {'constant_memory': True})
请注意,在这种模式下,通过workbook的
write_()
方法在新行中写入数据时,将会写入一行数据,然后将其丢弃。因此,一旦激活该模式,就应当按照顺序写入数据。所以,add_table()
和merge_range()
在此模式在不可用。tmpdir:
XlsxWriter
在生成最终的XLSX文件之前,会将Excel工作簿存储在临时文件中。临时文件在系统的temp目录中创建。如果你的程序无法访问系统默认的临时目录,或者改临时目录没有足够的空间,则可以使用tmpdir
选项指定备用的目录:workbook = xlsxwriter.Workbook(filename, {'tmpdir': '/home/user/tmp'})
临时目录必须已经存在,XlsxWriter不会去创建它。
in_memory:为了避免在生成最终的XLSX文件时使用临时文件,例如有些服务器不允许使用临时文件。则需要将
in_memory
选项设置为True
:workbook = xlsxwriter.Workbook(filename, {'in_memory': True})
此选项将会覆盖
constant_memory
选项。strings_to_numbers:为了避免在使用
write()
方法写入数据时出现Excel关于“数字存储为文本”的警告,在可能的情况下使用将字符串转换为数字的方法float()。默认值为False
。要启用此选项,请使用:workbook = xlsxwriter.Workbook(filename, {'strings_to_numbers': True})
strings_to_formulas:
write()
方法自动将字符串识别转换为公式,默认为True
,如果需要禁用,请使用:workbook = xlsxwriter.Workbook(filename, {'strings_to_formulas': False})
strings_to_urls:
write()
方法自动将字符串识别转换为URL链接,默认为True
,如果需要禁用,请使用:workbook = xlsxwriter.Workbook(filename, {'strings_to_urls': False})
max_url_length:设置工作表中超链接的最大长度,默认值为2079,最小值为255。Excel 2015之前的Excel版本将超链接和锚定/位置限制为每个255个字符。此后的版本最多支持2079个字符。可以通过此选项进行设置:
workbook = xlsxwriter.Workbook(filename, {'max_url_length': 255})
nan_inf_to_errors:启用
write()
和write_number()
方法将nan、inf、-inf转换为Excel错误。Excel不会讲nan和inf作为数字处理,所以作为解决方法,它们会被映射到产生错误代码的公式#NUM
和#DIV/0!
。默认为False
。如果要启用,请使用:workbook = xlsxwriter.Workbook(filename, {'nan_inf_to_errors': True})
default_date_format:设置默认的日期时间格式字符串:
xlsxwriter.Workbook(filename, {'default_date_format': 'dd/mm/yy'})
remove_timezone:Excel中不支持日期中的时区,而XlsxWriter并没有任何安全的方法来处理Python中带时区的日期时间,因此用户应该自行转换或删除时区。或者使用
remove_timezone
选项将datetime
值中的时区剥离,默认为False
。如果要启用此选项,请使用:workbook = xlsxwriter.Workbook(filename, {'remove_timezone': True})
date_1904:默认情况下XlsxWriter以1900为时间的起始,如果要更改此设置,可以将
date_1904
设置为True
:workbook = xlsxwriter.Workbook(filename, {'date_1904': True})
当你指定文件名的时候,建议使用.xlsx为扩展名,否则打开文件时Excel会出现警告。
Workbook()
方法还可以通过with
方法来工作,在这种情况下,它就不需要显示地使用close()
方法关闭工作簿:
with xlsxwriter.Workbook('hello_world.xlsx') as workbook:
worksheet = workbook.add_worksheet()
worksheet.write('A1', 'Hello world')
还可以使用BytesIO将文件写入到内存中,如下所示:
from io import BytesIO
output = BytesIO()
workbook = xlsxwriter.Workbook(output)
worksheet = workbook.add_worksheet()
worksheet.write('A1', 'Hello')
workbook.close()
xlsx_data = output.getvalue()
如果要避免使用任何临时文件并将其保存在内存中,请使用上面提到的in_memory
选项。