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

时间:2017-06-16 16:14:11

标签: python xlwt

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

我想获取源文件的第一张表并将其作为新选项卡复制到dest文件(在dest文件中的位置并不重要),然后保存它。

无法在xlrdxlwtxlutils找到一个简单的方法来执行此操作。我错过了什么吗?

4 个答案:

答案 0 :(得分:6)

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

使用Excel应用程序进行实际复制的解决方案。数据值,格式和工作表中的其他所有内容都将被复制。

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()

答案 1 :(得分:2)

如果您不反对使用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')

希望有所帮助

答案 2 :(得分:0)

漫长的战斗终于得到了答案。 来自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'))
  • 它也可以从一个工作簿到另一个工作簿。
  • 必须提供一系列单元格。只要确保范围足以覆盖整个工作表即可。
  • 复制功能复制/粘贴具有一系列单元格的所有内容(值,单元格格式,超链接,单元格类型...)

答案 3 :(得分:-2)

您也可以尝试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