使用 xlwings 快速写入 xlsm
Posted
技术标签:
【中文标题】使用 xlwings 快速写入 xlsm【英文标题】:Fast writing to xlsm with xlwings 【发布时间】:2021-01-04 15:52:04 【问题描述】:我正在尝试使用 xlwings 0.20.2 将一些浮点数和字符串写入 xlsm 文件。 尽管以下方法有效,但我希望它更快:
sht.range('A1').options(transpose=True).value = [float1, float2]
sht.range('B7').value = string1
sht.range('A4').options(transpose=True).value = [string2, float3]
...
我已经意识到了
sht.range('A1').options(transpose=True).value = [float1, float2]
比
快sht.range('A1').value = float1
sht.range('A2').value = float2
因此我的想法是将所有浮点数和字符串收集到一个列表中:
output = [[None] * 8, [None] * 8]
output[0][0] = float1
output[0][1] = float2
output[1][8] = string1
...
并将其写入 Excel 工作表。 这样做的问题是,每次我在写出过程中点击“无”时,它都会删除相关单元格的内容(例如 A3)。
您有什么避免这种情况的建议或替代方法的想法吗?正如我所说,这完全是关于我所要求的性能。
PS:我编写了一个自定义转换器,如 here 所述,但如果值为“无”,则在 write_value() 方法中简单地不返回任何值仍会擦除单元格的内容。
【问题讨论】:
【参考方案1】:您需要读取整个范围,然后在 Python 端更改您想要的值并将其写回。如果您的范围包含公式,您可以使用myrange.formula
属性来读取公式 - 可以再次通过.value
将它们写出来。这样,您就不会更改现有单元格。
【讨论】:
以上是关于使用 xlwings 快速写入 xlsm的主要内容,如果未能解决你的问题,请参考以下文章