鱼C论坛

 找回密码
 立即注册
查看: 58|回复: 3

[已解决]python将剪贴板里面复制到指定的文件里面

[复制链接]
发表于 5 天前 | 显示全部楼层 |阅读模式
7鱼币
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")  # 根据分隔符调整,如 \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[sheet_name]

    # 获取工作表的最大行数(包括空行)
    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  
最佳答案
5 天前
因为有一行被当成表头了,加个header=None

df = pd.read_csv(data, sep="\t", header=None)

最佳答案

查看完整内容

因为有一行被当成表头了,加个header=None df = pd.read_csv(data, sep="\t", header=None)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 5 天前 | 显示全部楼层    本楼为最佳答案   
因为有一行被当成表头了,加个header=None

df = pd.read_csv(data, sep="\t", header=None)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 5 天前 | 显示全部楼层
看起来你遇到的问题是由于 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[sheet_name]

    # 获取工作表的最大行数(包括空行)
    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 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 5 天前 | 显示全部楼层
谢谢!
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[sheet_name]

    # 获取工作表的最大行数(包括空行)
    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 文件中!")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-2 21:07

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表