如何用Python获取Excel/HTML复制的剪贴板富文本而非纯文本?
获取剪贴板中的富文本(Excel/HTML来源)
pyperclip和clipboard这类库仅封装了纯文本的剪贴板操作,要获取富文本需直接调用系统级剪贴板API,以下分平台给出实现方案:
Windows平台(使用pywin32)
Windows剪贴板中,从Excel/HTML复制的富文本通常以CF_HTML格式存储,可通过win32clipboard模块读取:
- 安装依赖:
pip install pywin32
- 读取剪贴板富文本代码:
import win32clipboard def get_clipboard_html(): win32clipboard.OpenClipboard() try: # 检查剪贴板是否包含CF_HTML格式数据 if win32clipboard.IsClipboardFormatAvailable(win32clipboard.CF_HTML): html_data = win32clipboard.GetClipboardData(win32clipboard.CF_HTML) return html_data.decode('utf-8') # 解码为字符串 else: return "剪贴板中无HTML格式富文本" finally: win32clipboard.CloseClipboard() # 使用示例 print(get_clipboard_html())
这段代码会返回带格式标记的HTML内容,Excel复制的内容会被转换为带表格样式的HTML代码。
macOS平台(使用pyobjc)
macOS的剪贴板通过NSPasteboard管理,富文本通常以public.html或public.rtf格式存在:
- 安装依赖:
pip install pyobjc
- 读取剪贴板富文本代码:
from AppKit import NSPasteboard def get_clipboard_rich_text(): pasteboard = NSPasteboard.generalPasteboard() # 优先读取HTML格式 html_data = pasteboard.stringForType_("public.html") if html_data: return html_data # fallback到RTF格式 rtf_data = pasteboard.stringForType_("public.rtf") return rtf_data if rtf_data else "剪贴板中无富文本数据" # 使用示例 print(get_clipboard_rich_text())
说明
- 从Excel复制的内容,在剪贴板中会同时存在纯文本、HTML、RTF等多种格式,可根据需求选择对应格式读取。
- 跨平台场景下,需针对不同操作系统做分支判断,调用对应的剪贴板操作逻辑。
内容的提问来源于stack exchange,提问作者END SKY
相关产品推荐
相关产品推荐

