如何将Excel工作表复制到Python中的另一个工作簿

Kal*_*iMa 9 python xlwt

我有一个带有源文件路径的字符串和另一个带有destfile路径的字符串,它们都指向Excel工作簿。

我要获取源文件的第一张纸并将其作为新标签复制到destfile中(与destfile中的位置无关),然后保存它。

xlrdor xlwt或or中找不到简单的方法xlutils。我想念什么吗?

Xuk*_*rao 11

解决方案1

使用该openpyxl软件包的仅Python解决方案。仅数据值将被复制。

import openpyxl as xl

path1 = 'C:\\Users\\Xukrao\\Desktop\\workbook1.xlsx'
path2 = 'C:\\Users\\Xukrao\\Desktop\\workbook2.xlsx'

wb1 = xl.load_workbook(filename=path1)
ws1 = wb1.worksheets[0]

wb2 = xl.load_workbook(filename=path2)
ws2 = wb2.create_sheet(ws1.title)

for row in ws1:
    for cell in row:
        ws2[cell.coordinate].value = cell.value

wb2.save(path2)
Run Code Online (Sandbox Code Playgroud)

解决方案2

使用该pywin32程序包将复制操作委派给Excel应用程序的解决方案。数据值,格式和工作表中的所有其他内容都将被复制。注意:此解决方案仅在安装了MS Excel的Windows计算机上有效。

from win32com.client import Dispatch

path1 = 'C:\\Users\\Xukrao\\Desktop\\workbook1.xlsx'
path2 = 'C:\\Users\\Xukrao\\Desktop\\workbook2.xlsx'

xl = Dispatch("Excel.Application")
xl.Visible = True  # You can remove this line if you don't want the Excel application to be visible

wb1 = xl.Workbooks.Open(Filename=path1)
wb2 = xl.Workbooks.Open(Filename=path2)

ws1 = wb1.Worksheets(1)
ws1.Copy(Before=wb2.Worksheets(1))

wb2.Close(SaveChanges=True)
xl.Quit()
Run Code Online (Sandbox Code Playgroud)

解决方案3

使用该xlwings程序包将复制操作委派给Excel应用程序的解决方案。本质上,Xlwings是围绕(大多数,尽管不是全部)pywin32/ appscriptexcel API函数的智能包装。数据值,格式和工作表中的所有其他内容都将被复制。注意:此解决方案仅在安装了MS Excel的Windows或Mac计算机上有效。

import xlwings as xw

path1 = 'C:\\Users\\Xukrao\\Desktop\\workbook1.xlsx'
path2 = 'C:\\Users\\Xukrao\\Desktop\\workbook2.xlsx'

wb1 = xw.Book(path1)
wb2 = xw.Book(path2)

ws1 = wb1.sheets(1)
ws1.api.Copy(Before=wb2.sheets(1).api)
wb2.save()
wb2.app.quit()
Run Code Online (Sandbox Code Playgroud)

  • @Pete 解决方案 1:`ws1 = wb1["Name"]`,解决方案 2:`ws1 = wb1.Worksheets("Name")`,解决方案 3:`ws1 = wb1.sheets("Name")` (7认同)

Bub*_*Gut 7

如果您不反对使用 Pandas,这可能会有所帮助

import pandas as pd

#change xxx with the sheet name that includes the data
data = pd.read_excel(sourcefile, sheet_name="xxx")

#save it to the 'new_tab' in destfile
data.to_excel(destfile, sheet_name='new_tab')
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你

  • 复制 Excel 工作表时,Excel 工作表格式丢失。如何保持格式也。 (3认同)