当前位置: 首页 > 面试题库 >

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

穆建元
2023-03-14
问题内容

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

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

xlrdorxlwt或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/
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()


 类似资料:
  • 我已经从网上搜索了很多,但不幸的是,没有一个奏效。如何将工作表从一个工作簿复制到另一个工作簿,使用C#在Excel中剪切和粘贴单元格值,错误:range类的Pastespecial方法失败。 知道为什么会这样吗?

  • 我有一本有工作表的工作簿。为了简单起见,假设我的工作簿有一个工作表。在我的工作表中,它被称为“SHEET1”,在单元格A1到A4中有数据。 我希望我的VBA代码做的是: 将工作簿“A”的第1行(或特别是单元格A1至A4)复制到范围变量“我的范围”中 创建一个新的工作簿,我们将此工作簿称为'B' 为工作簿'B'的默认“sheet1”指定一个新名称为“测试名称” 打开工作簿'B'(尽管我意识到VBA代

  • 试图从当前工作簿“Create Report.xlsm”中复制工作表名称“Headings Explantions”,该工作簿打开到我要求打开的工作簿中,我得到了下标超出范围的错误

  • 我想将工作簿的一页(包括样式)复制到新的工作簿。 我尝试对所有单元格进行迭代 抛出java.lang.IllegalStateException:超出了单元格样式的最大数目。在.xls工作簿中最多可以定义4000个样式 抛出java.lang.IllegalArgumentException:此样式不属于提供的工作簿。是否尝试将样式从一个工作簿分配到另一个工作簿的单元格? 正确的样式复制方法是什么

  • 我正试图将所有工作表(7张)从workbook1(wb1)复制到WB2。wb1包含命令按钮,但我不希望它们出现在我的新工作簿中。我正在使用循环将单个工作表从一个工作簿复制到另一个工作簿。但是复制到第二张时出错了。我使用的代码如下:- 循环第一次成功运行,但对于i=2,代码给出错误

  • 所以在COL D中,我必须只粘贴COL A和COL C相等的值,如果这些值不相等,则跳过或粘贴COL D中的任何东西 我写过类似这样的代码,但不幸的是它粘贴了一切!!