如何加快 excel 电子表格的创建。目前它的单元格与 openpyxl
How to speed up excel spreadsheet creation. currently its cell by cell with openpyxl
我需要使用 openpyxl 加快 Excel spreadsheet 的生成过程。
如果可能的话,我想继续使用 openpyxl。
目前我的数据数组 ~3x4500 一次一个地放入 sheet 单元格。
for n in range(0,len(headers)):
worksheet.cell(row=1, column=worksheet.max_column + 1).value = headers[n]
for i in range(0,len(dataarraylist[n])):
worksheet.cell(row=2+i, column=worksheet.max_column).value = dataarraylist[n][i]
由于某种原因,开始需要 22 秒,然后随着下一个数组的出现,时间要求会显着增加。
所以它是 20 多岁,然后是 40 多岁、60 多岁、90 多岁等等。
有没有办法用更少的时间在 excel 中放入整列甚至这样的 3x4500 数组?
抱歉,如果这个问题感觉很愚蠢,我是新来的更大的传播sheets,找不到任何与使用 openpyxl 的 Excel 的批量粘贴相关的内容。
编辑:
将其切换为追加(如下所示)我失去了一点控制权,但我获得了足够的速度,现在对我来说已经足够了。
我修改了代码:
def write_asset_position_data_in_spreadsheet(dataarraylist):
t=time.time()
headers = ['ID','Name','Position']
path=str(pathlib.Path().absolute())
wb = load_workbook(path+"/Aalizer.xlsx")
worksheet = wb.active
for i in range(0,3):
worksheet.append([headers[i]]+dataarraylist[i])
print('Extracted',len(dataarraylist)*len(dataarraylist[0]),"new entries\nThis took",time.time()-t,"seconds")
worksheet.title = "Analizer"
wb.save(path+"/Analizer.xlsx")
这导致以下速度结果
当然可以。这个时间要求也随着越来越多的数据而扩展,但现在这已经足够了。
此致
以前做过,这里没有,但是根据 RealPython:
from openpyxl import Workbook
workbook = Workbook()
sheet = workbook.active
rows = [
["Product", "Online", "Store"],
[1, 30, 45],
[2, 40, 30],
[3, 40, 25],
[4, 50, 30],
]
for row in rows:
sheet.append(row)
希望比分别处理每个单元格更快一些 - 而且您的代码绝对更简洁。
我需要使用 openpyxl 加快 Excel spreadsheet 的生成过程。 如果可能的话,我想继续使用 openpyxl。
目前我的数据数组 ~3x4500 一次一个地放入 sheet 单元格。
for n in range(0,len(headers)):
worksheet.cell(row=1, column=worksheet.max_column + 1).value = headers[n]
for i in range(0,len(dataarraylist[n])):
worksheet.cell(row=2+i, column=worksheet.max_column).value = dataarraylist[n][i]
由于某种原因,开始需要 22 秒,然后随着下一个数组的出现,时间要求会显着增加。 所以它是 20 多岁,然后是 40 多岁、60 多岁、90 多岁等等。 有没有办法用更少的时间在 excel 中放入整列甚至这样的 3x4500 数组?
抱歉,如果这个问题感觉很愚蠢,我是新来的更大的传播sheets,找不到任何与使用 openpyxl 的 Excel 的批量粘贴相关的内容。
编辑:
将其切换为追加(如下所示)我失去了一点控制权,但我获得了足够的速度,现在对我来说已经足够了。
我修改了代码:
def write_asset_position_data_in_spreadsheet(dataarraylist):
t=time.time()
headers = ['ID','Name','Position']
path=str(pathlib.Path().absolute())
wb = load_workbook(path+"/Aalizer.xlsx")
worksheet = wb.active
for i in range(0,3):
worksheet.append([headers[i]]+dataarraylist[i])
print('Extracted',len(dataarraylist)*len(dataarraylist[0]),"new entries\nThis took",time.time()-t,"seconds")
worksheet.title = "Analizer"
wb.save(path+"/Analizer.xlsx")
这导致以下速度结果
当然可以。这个时间要求也随着越来越多的数据而扩展,但现在这已经足够了。
此致
以前做过,这里没有,但是根据 RealPython:
from openpyxl import Workbook
workbook = Workbook()
sheet = workbook.active
rows = [
["Product", "Online", "Store"],
[1, 30, 45],
[2, 40, 30],
[3, 40, 25],
[4, 50, 30],
]
for row in rows:
sheet.append(row)
希望比分别处理每个单元格更快一些 - 而且您的代码绝对更简洁。