python将剪贴板里面复制到指定的文件里面
import pandas as pdimport pyperclip
from io import StringIO
# 从剪贴板读取内容
clipboard_content = pyperclip.paste()
# 将剪贴板内容按行分割并转化为 DataFrame
# 假设剪贴板的内容是一个以制表符或逗号分隔的表格
data = StringIO(clipboard_content)
df = pd.read_csv(data, sep="\t")# 根据分隔符调整,如 \t 或 ','
# print(df)
# print(f"DataFrame 行数: {len(df)}")
# 读取现有的 Excel 文件
file_path = r'C:\Users\huawei\Desktop\上市集团资产.xlsx'
sheet_name = 'Sheet1'
# 使用 openpyxl 引擎打开现有的 Excel 文件并读取工作表
with pd.ExcelWriter(file_path, engine='openpyxl', mode='a', if_sheet_exists='replace') as writer:
# 获取工作簿和指定工作表
book = writer.book
sheet = book
# 获取工作表的最大行数(包括空行)
max_row = sheet.max_row# 获取现有数据的最大行数
# 打印现有的最大行数,检查是否正确
print(f"当前工作表最大行数: {max_row}")
# 使用 max_row 确保数据从正确的位置开始写入
start_row = max_row
# 将剪贴板内容追加到工作表
df.to_excel(writer, sheet_name=sheet_name, index=False, header=False, startrow=start_row)
print("剪贴板内容已成功复制到 Excel 文件中!")
我复制的内容一共有2行 但是粘贴到文件里面只有1行
复制的内容是
GXMC_FA_303310 1
GXMC_FA_303321 19392
但是粘贴到文件里面只有
GXMC_FA_303321 19392 因为有一行被当成表头了,加个header=None
df = pd.read_csv(data, sep="\t", header=None) 看起来你遇到的问题是由于 DataFrame 在写入 Excel 文件时覆盖了前一行的数据。这是因为 `startrow` 的值设置不当。可以通过调整开始写入的行数来解决这个问题。
假设你想从工作表的最后一行开始写入新数据,代码可以这样修改:
import pandas as pd
import pyperclip
from io import StringIO
# 从剪贴板读取内容
clipboard_content = pyperclip.paste()
# 将剪贴板内容按行分割并转化为 DataFrame
data = StringIO(clipboard_content)
df = pd.read_csv(data, sep="\t", header=None)# 根据实际情况调整分隔符和 header
# 读取现有的 Excel 文件
file_path = r'C:\Users\huawei\Desktop\上市集团资产.xlsx'
sheet_name = 'Sheet1'
# 使用 openpyxl 引擎打开现有的 Excel 文件并读取工作表
with pd.ExcelWriter(file_path, engine='openpyxl', mode='a', if_sheet_exists='overlay') as writer:
# 获取工作簿和指定工作表
book = writer.book
sheet = book
# 获取工作表的最大行数(包括空行)
max_row = sheet.max_row
# 打印现有的最大行数,检查是否正确
print(f"当前工作表最大行数: {max_row}")
# 使用 max_row 确保数据从正确的位置开始写入
start_row = max_row if max_row is not None else 0
# 将剪贴板内容追加到工作表
df.to_excel(writer, sheet_name=sheet_name, index=False, header=False, startrow=start_row)
print("剪贴板内容已成功复制到 Excel 文件中!")
请注意:
- 使用 `header=None` 时,避免数据的第一行被视为列名。
- 确保 `sheet_name` 与实际工作表名称一致。
- 使用 `if_sheet_exists='overlay'` 可以保留工作表中已有的数据。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 谢谢!
import pandas as pd
import pyperclip
from io import StringIO
# 从剪贴板读取内容
clipboard_content = pyperclip.paste()
# 将剪贴板内容按行分割并转化为 DataFrame
data = StringIO(clipboard_content)
df = pd.read_csv(data, sep="\t", header=None)# 根据实际情况调整分隔符和 header
# 读取现有的 Excel 文件
file_path = r'C:\Users\huawei\Desktop\上市集团资产.xlsx'
sheet_name = 'Sheet1'
# 使用 openpyxl 引擎打开现有的 Excel 文件并读取工作表
with pd.ExcelWriter(file_path, engine='openpyxl', mode='a', if_sheet_exists='overlay') as writer:
# 获取工作簿和指定工作表
book = writer.book
sheet = book
# 获取工作表的最大行数(包括空行)
max_row = sheet.max_row
# 打印现有的最大行数,检查是否正确
print(f"当前工作表最大行数: {max_row}")
# 使用 max_row 确保数据从正确的位置开始写入
start_row = max_row if max_row is not None else 0
# 将剪贴板内容追加到工作表
df.to_excel(writer, sheet_name=sheet_name, index=False, header=False, startrow=start_row)
print("剪贴板内容已成功复制到 Excel 文件中!")
页:
[1]