openpyxl 激活单元格无法复制单元格

-1 投票
2 回答
71 浏览
提问于 2025-04-13 20:01

我需要帮助,最近遇到一个问题。

我正在创建一个自动化程序,用来把Excel里的信息复制到另一个应用程序(比如记事本)。

一开始,我是用Pyautogui来进行复制和粘贴,但过了一段时间,它开始出现问题。有时候,它复制不正确,或者根本就没有按下复制键。

所以,我决定试试用Openpyxl来直接复制单元格的内容。但我在让它正常工作上遇到了麻烦。

首先,我无法正确获取单元格的值。其次,我无法让自动化程序实时识别当前活动的单元格已经改变。

这是我的代码:

import openpyxl

while True:

   wb = openpyxl.load_workbook('CONEMB_ZLE.xlsx')

   sheet = wb.active
   cell = sheet.active_cell  # Get the active cell object

   print(cell)

   wb.save('CONEMB_ZLE')
   print('salvo')
   wb.close()

有人能帮我解决这个问题吗?

提前谢谢大家!

我尝试了很多方法,但我就是想复制一个选中的单元格并保存到一个变量里。

2 个回答

0

要获取工作簿中活动单元格的值,你只需要再加一行代码 value = sheet[cell].value。另外,wb.save 这部分也需要稍微调整一下。这样,整个脚本就会变成这样。

import openpyxl

while True:
   wb = openpyxl.load_workbook('CONEMB_ZLE.xlsx')
   sheet = wb.active
   cell = sheet.active_cell  # Get the active cell object
   value = sheet[cell].value
   print(value)

   wb.save('CONEMB_ZLE.xlsx')
   print('salvo')
   wb.close()
0

openpyxl 是一个很不错的工具,可以用来处理 Excel 文件,但它不适合用来实时与打开的 Excel 进行交互。这就是说,如果你想知道在 Excel 中哪个单元格是当前选中的,openpyxl 就帮不了你。

如果你在使用 PyAutoGUI 时遇到无法正确复制或模拟按键的问题,可以考虑使用 pyperclip 这个库,它可以更可靠地处理复制和粘贴操作。

如果你真的需要实时检测 Excel 中的变化,比如当前选中的单元格,你就需要一些更专门的工具来与正在运行的 Excel 进行交互。在 Windows 系统上,你可以使用一种叫做 COM 自动化的技术(配合 pywin32 库),这样就可以实现这种交互。

import openpyxl

wb = openpyxl.load_workbook('CONEMB_ZLE.xlsx')

sheet = wb.active

cell_value = sheet['A1'].value

print(cell_value)

wb.close()

撰写回答