如何将Excel工作表复制到Python中的另一个工作簿
我有一个带有源文件路径的字符串和另一个带有destfile路径的字符串,它们都指向Excel工作簿。
我想获取源文件的第一张纸并将其作为新选项卡复制到destfile(与destfile中的位置无关),然后保存它。
在xlrd
orxlwt
或or中找不到简单的方法xlutils
。我想念什么吗?
-
解决方案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
/
appscript
excel 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()