看起来你遇到的问题是由于 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 小助理,如未能正确解答您的问题,请继续追问。 |