27 worksheet.write()
优质
小牛编辑
126浏览
2023-12-01
write
(row, col, *args) 将数据写入sheet工作表的指定单元格中。
- 参数:
- row:单元格的行索引(起始为0)
- col:单元格的列索引(起始为0)
- args:传递给子方法的其他参数
- 返回值:
- 0:写入成功
- -1:写入失败
- 调用的
write
方法的其他值
Excel中区别划分了数字、字符串、空格、公式和超链接等数据类型。在XlsxWriter中,为了简化数据写入的过程,write()
方法充当了以下几个具体方法的通用别名:
write_string()
write_number()
write_blank()
write_formula()
write_datetime()
write_boolean()
write_url()
write()
方法处理数据类型的规则如下:
- 数据类型为
int
、long
、float
、decimal.Decimal
和fractions.Fraction
时,使用write_number()
方法写入; - 数据类型为
datetime.date
、datetime.datetime
、datetime.time
或datetime.timedelta
时,使用write_datetime()
方法写入; None
和空字符串使用write_blank()
发写入;bool
类型的数据使用write_boolean()
方法写入;
然后按照如下方式处理字符串:
- 以等号“=”开头的字符串用于匹配公式,并使用
write_formula()
方法写入。这可以被覆盖; - 与支持的超链接URL类型匹配的字符串将使用
write_url()
方法写入; - 当
Workbook()
构造函数的strings_to_numbers
选项值为True
时,使用float()
转换为数字的字符串将使用write_number()
方法写入,以避免Excel出现“数字存储为文本”的警告; - 不符合以上任何条件的字符串都将使用
write_string()
方法写入;
如果上述类型均不匹配,则使用float()
方法计算该值,以查看它是否对应于用户的float类型,如果是,则使用write_number()
方法写入。
最后,如果这些数据类型都不匹配,则会触发TypeError
异常。当时也可以使用下面会介绍到的add_write_handler()
方法和用户自定义的数据类型来处理其他用户输入的数据类型。
下面是一些例子:
worksheet.write(0, 0, 'Hello') # write_string()
worksheet.write(1, 0, 'World') # write_string()
worksheet.write(2, 0, 2) # write_number()
worksheet.write(3, 0, 3.00001) # write_number()
worksheet.write(4, 0, '=SIN(PI()/4)') # write_formula()
worksheet.write(5, 0, '') # write_blank()
worksheet.write(6, 0, None) # write_blank()
这将创建如下图所示的工作表:
> 注意! Workbook()
构造函数中有三个可选参数选项,可用于重写write()
方法中的字符串处理,下面显示了这些默认选项及其默认值:
xlsxwriter.Workbook(filename, {'strings_to_numbers': False,
'strings_to_formulas': True,
'strings_to_urls': True})
write()
方法支持两种指定单元格的方式:行列法和单元格名称表示法:
# These are equivalent.
worksheet.write(0, 0, 'Hello')
worksheet.write('A1', 'Hello')
write()
有一个字方法cell_format
参数,能够用来将格式应用在单元格。这个参数是可选的,但是当指定的时候,必须是有效的format
格式对象:
cell_format = workbook.add_format({'bold': True, 'italic': True})
worksheet.write(0, 0, 'Hello', cell_format) # Cell is bold and italic.