Python win32com 选择范围

问题描述 投票:0回答:2

我需要从工作簿_A 中选择一系列值并将其复制到另一个工作簿_B。问题是我只需要复制值,同时保留 workbook_B 的格式。

我不明白为什么它给我一个错误“com_error: (-2147352567, '发生异常。', (0, 'Microsoft Excel', '选择 Range 类的方法失败', 'xlmain11.chm', 0, - 2146827284),无)”

代码在这里

import pandas as pd
import win32com
from win32com.client import Dispatch,constants

wb_A = r"A.xlsx"
wb_B_Template = r"B_Template_Preformatted.xlsx"

xlapp = win32com.client.gencache.EnsureDispatch('Excel.Application')
xlapp.Visible= False
xlapp.DisplayAlerts = False

cars = {'Brand': ['Honda','Toyota','Ford','Audi'],
        'Price': [0.23, 0.35, 0.43, 0.57]}

df_cars = pd.DataFrame(cars, columns = ['Brand', 'Price'])
df_cars.to_excel(wb_A, "Table")

wb_origin = xlapp.Workbooks.Open(wb_A)
wb_destination = xlapp.Workbooks.Open(wb_B_Template)

wb_origin.Worksheets("Table").Range("A1:C5").Select()
xlapp.Selection.Copy(Destination=wb_destination.Worksheets("Tabelle").Range("A1"))

wb_origin.Close()
wb_destination.Close(SaveChanges=True)

xlapp.Quit()
python python-3.x excel win32com
2个回答
1
投票
import win32com.client as win32
excel = win32.gencache.EnsureDispatch('Excel.Application')
wb = excel.Workbooks.Add()
ws = wb.Worksheets("Sheet1")
ws.Range("A1").Value = 1
ws.Range("A2").Value = 2
ws.Range("A1:A2").AutoFill(ws.Range("A1:A10"),win32.constants.xlFillDefault)
wb.SaveAs('autofill_cells.xlsx')
excel.Application.Quit()

看看这个


0
投票

这是因为您试图选择不同工作表窗口处于活动状态的范围。试试这个

wb_origin.Worksheets("Table").Activate()
wb_origin.Worksheets("Table").Range("A1:C5").Select()
© www.soinside.com 2019 - 2024. All rights reserved.