![](/img/trans.png)
[英]How to copy excel sheet to another workbook with same format using python
[英]How to copy over an Excel sheet to another workbook in Python
我有一个带有源文件路径的字符串和另一个带有 destfile 路径的字符串,它们都指向 Excel 工作簿。
我想获取源文件的第一张表并将其作为新选项卡复制到 destfile(与 destfile 中的哪个位置无关),然后保存它。
在xlrd
或xlwt
或xlutils
找不到一种简单的方法来做到这一点。 我错过了什么吗?
使用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)
使用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()
使用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()
如果您不反对使用 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')
希望它有帮助
你也可以试试xlwings 。
import xlwings as xw
wb = xw.Book(r'C:\path\to\file.xlsx')
sht = wb.sheets['Sheet1']
new_wb = xw.Book(r'C:\new_path\to\file.xlsx')
new_wb.sheets['name'] = sht
漫长的战斗,终于得到了答案。 来自 xlwings 源代码: https : //github.com/xlwings/xlwings/pull/1216/files
source_sheet.range.copy(destination_sheet.range)
换句话说:
wb.sheets['Sheet1'].range('A1:A6').copy(wb.sheets['Sheet2'].range('A1:A6'))
查看这个可以简化从各种工作表复制和粘贴的 Python 类: https : //github.com/dabomb1004/Excel-CopyPaste
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.