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

发布于 2021-01-29 19:25:08

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

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

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

关注者
0
被浏览
150
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    解决方案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)
    

    解决方案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()
    

    解决方案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()
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看