我有一个Excel工作表。在J列中,我有一些用于在K列中进行计算的源数据。K列具有我需要的值,但是当我单击一个单元格时,公式就会显示出来。我只想要K列中的值,而不是公式中的值。我读到某个地方,我只需要设置数据= True,这已经完成了。然后,我将数据从K列粘贴到L列(目的是稍后删除J和K列)。我以为L列将仅包含K中的值,但是如果我单击一个单元格,该公式仍会显示。如何仅将值仅从一列粘贴到另一列?
import openpyxl
wb = openpyxl.load_workbook('edited4.xlsx', data_only=True)
sheet = wb['Sheet1']
last_row = 100
for i in range(2, last_row):
cell = "K" + str(i)
a_cell = "J" + str(i)
sheet[cell] = '=IF(' + a_cell + '="R","Yes","No")'
rangeselected = []
for i in range (1, 100,1):
rangeselected.append(sheet.cell(row = i, column = 11).value)
for i in range (1, 1000,1):
sheet.cell(row=i, column=12).value = rangeselected[i-1]
wb.save('edited4.xlsx')
自从我使用过openpyxl已经有一段时间了。但:
Openpyxl不运行Excel公式。它读取公式字符串或Excel *运行的最后一次计算的结果。这意味着,如果在Excel外部创建计算,并且Excel从未打开过该文件,则仅公式可用。除非需要(出于历史目的等)显示公式是什么,否则应使用Python进行计算-无论如何它将更快,更高效。
*当我说Excel时,我还包括将缓存上次运行结果的任何类似Excel的电子表格。
尝试以下操作(根据需要调整列号):
import openpyxl
wb = openpyxl.load_workbook('edited4.xlsx', data_only=True)
sheet = wb['Sheet1']
last_row = 100
data_column = 11
test_column = 12
result_column = 13
for i in range(2, last_row):
if sheet.cell(row=i, column=test_column).value == "R":
sheet.cell(row=i, column=result_column).value = "Yes"
else:
sheet.cell(row=i, column=result_column).value = "No"
wb.save('edited4.xlsx')
如果您有一个格式正确的数据表,则可以使用enumerate()和Worksheet.iter_rows()将其缩短一两步,但我将留给您想象。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句