Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Python和openpyxl仅在Excel中粘贴值_Python_Excel_Openpyxl_Copy Paste - Fatal编程技术网

如何使用Python和openpyxl仅在Excel中粘贴值

如何使用Python和openpyxl仅在Excel中粘贴值,python,excel,openpyxl,copy-paste,Python,Excel,Openpyxl,Copy Paste,我有一份Excel工作表。 在J列中,我有一些源数据,我用来在K列中进行计算。 列K有我需要的值,但当我单击单元格时,公式会显示出来。 我只需要K列中的值,而不是公式。 我在某个地方读到,我需要设置data only=True,我已经这样做了。 然后,我将数据从列K粘贴到列L(打算稍后删除列J和K)。 我以为L列只有K中的值,但是如果我点击一个单元格,公式仍然会显示出来。 如何仅将值从一列粘贴到另一列 import openpyxl wb = openpyxl.load_workbook('ed

我有一份Excel工作表。 在J列中,我有一些源数据,我用来在K列中进行计算。 列K有我需要的值,但当我单击单元格时,公式会显示出来。 我只需要K列中的值,而不是公式。 我在某个地方读到,我需要设置data only=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进行计算——无论如何,Python会更快、更高效

*当我说Excel时,我还包括任何类似Excel的电子表格,它们将缓存上次运行的结果

尝试此操作(根据需要调整列数):


如果您有一个格式良好的数据表,您可能可以使用enumerate()和sheet.iter_rows()将其缩短一两步,但我会让您想象一下。

当您说“我然后粘贴了数据”时,您实际上是指粘贴数据还是指以编程方式传输数据?我是以编程方式粘贴的。代码见附件。Column=11表示K列,Column=12表示L列。Openpyxl不包含Excel公式引擎的副本。这意味着,除非打开Excel,否则不会解析任何公式,只有公式可用。您应该使用Python执行计算并插入结果。谢谢Alan。效果很好。我真的很感谢你的帮助。
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')