使用openpyxl的append写入excel出现AttributeError的可能原因

之前源码是这样的,

import openpyxl
from openpyxl import Workbook
wb=openpyxl.load_workbook('text.xlsx')
sheet=wb.active
c=[1,2,"a",4]
sheet.append(c)
sheet.save('text.xlsx')

最后一句有问题,save需要保存的时wb这个文件,而不是sheet表格!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: openpyxl写入Excel会比较慢,因为它是使用Python实现的。但是可以通过以下方式来尝试提高写入速度: 1. 设置write_only模式。这种模式只能用于写入,但是写入速度会比默认模式快很多。 ```python from openpyxl import Workbook wb = Workbook(write_only=True) ``` 2. 写入数据时,尽量减少写入次数。可以将数据存储在一个列表或者字典中,然后一次性写入Excel。 ```python from openpyxl import Workbook wb = Workbook() ws = wb.active data = [ ['Name', 'Age', 'Gender'], ['John', 25, 'Male'], ['Lucy', 24, 'Female'], ['Tom', 30, 'Male'] ] for row in data: ws.append(row) ``` 3. 关闭自动计算公式。打开Excel文件时,如果文件中包含公式,openpyxl会自动计算公式。这会降低写入速度,可以通过以下方式关闭自动计算: ```python from openpyxl import Workbook wb = Workbook() ws = wb.active # 关闭自动计算公式 ws.calculate_dimension(force=False) ``` 4. 使用多线程。可以创建多个线程,每个线程负责写入一部分数据。 ```python from openpyxl import Workbook from threading import Thread wb = Workbook() ws = wb.active data = [ ['Name', 'Age', 'Gender'], ['John', 25, 'Male'], ['Lucy', 24, 'Female'], ['Tom', 30, 'Male'] ] # 定义一个写入函数 def write_data(start_row, end_row): for row in data[start_row:end_row]: ws.append(row) # 创建两个线程 t1 = Thread(target=write_data, args=(1, 3)) t2 = Thread(target=write_data, args=(3, 4)) # 启动线程 t1.start() t2.start() # 等待线程执行完成 t1.join() t2.join() # 保存Excel文件 wb.save('test.xlsx') ``` 以上是一些提高openpyxl写入Excel速度的方法,可以根据具体情况选择适合自己的方法。 ### 回答2: openpyxl库在写入大量数据到Excel文件时可能会较慢,这是因为openpyxl库是使用Python来操作Excel文件的,而Python是解释型语言,执行速度相对较慢。以下是几种提升写入速度的方法: 1. 使用优化的写入方式:openpyxl库允许一次性写入多行数据,而不是逐个单元格地写入。可以使用append方法将数据以列表的形式添加到Excel文件中,或者使用iter_rows方法一次性添加多行数据。这样可以减少写入的次数,提高写入速度。 2. 关闭自动计算:在进行大量写入时,Excel可能会执行一系列的自动计算操作,这会导致写入速度变慢。可以在写入前暂时关闭自动计算选项,待所有数据写入完成后再重新计算。 3. 使用其他库:如果速度是一个非常重要的因素,可以考虑使用其他库来操作Excel文件,如pandas库或xlwings库。这些库通常比openpyxl库更快速、更高效。 4. 拆分数据:如果要写入的数据量非常大,可以考虑将数据拆分成多个小块写入,而不是一次性写入所有数据。这样可以减少每次写入的数据量,提高写入速度。 综上所述,通过使用优化的写入方式,关闭自动计算选项,尝试其他库,或拆分数据块,都可以提升openpyxl写入Excel文件的速度。根据实际需求选择适合的方法进行优化。 ### 回答3: openpyxl写入EXCEL慢的问题可能是由于一些原因导致的,以下是一些解决方案: 1. 减少写入频率:openpyxl在每次写入单元格时都会打开和关闭Excel文件,这是一个耗时的操作。可以尝试减少写入的频率,例如,将多个数据写入到一个临时数据结构中,然后一次性写入Excel中。 2. 使用load_workbook()的「data_only」参数:当打开一个包含公式的Excel文件时,openpyxl会计算这些公式,这会消耗大量的时间。如果你只需要读取计算结果而不是公式本身,可以将load_workbook()函数的「data_only」参数设置为True,以加载已计算的结果,从而提高写入速度。 3. 关闭自动重计算:在写入Excel文件之前,可以通过设置openpyxl的「calculation」属性为manual,关闭自动重计算。这样可以避免在写入每个单元格时都进行公式计算,从而提高写入速度。但要注意,在关闭重计算后,需要手动进行计算才能得到正确的结果。 这些解决方案可以显著提高openpyxl写入Excel的速度。如果问题仍然存在,可能需要考虑使用其他库或工具来进行Excel操作,例如pandas或xlwings,它们可能具有更高的性能。此外,如果需要处理大量数据,也可以考虑将数据存储在数据库中,然后使用Excel文件连接到数据库进行数据读写操作。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值