python xlwings 复制工作表

其实xlwings在早期并没有提供复制工作表的相应函数,要实现复制工作表功能,需要调用excel的vba里面的相应方法worksheet.Copy。

在xlwings0.22版本以后,xlwings开始原生支持copy方法进行工作表复制,先说版本在0.22以下的旧办法:

首先看excel vba的帮助文档:

应用于 ChartChartsSheetsWorksheetWorksheets 对象的 Copy 方法。

将指定工作表复制到工作簿的另一位置。

expression.Copy(Before, After)

expression      必需。该表达式返回上面的对象之一。

Before      Variant 类型,可选。指定某工作表,复制的工作表将置于此工作表之前。如果已经指定了 After,则不能指定 Before

After      Variant 类型,可选。指定某工作表,复制的工作表将置于此工作表之后。如果已经指定了 Before,则不能指定 After

说明

如果既未指定 Before 参数也未指定 After 参数,则 Microsoft Excel 将新建一个工作簿,其中将包含复制的工作表。

本示例复制工作表 Sheet1,并将其放置在工作表 Sheet3 之后。

Worksheets("Sheet1").Copy After:=Worksheets("Sheet3")

那么在清楚了原理后,就可以在python里面码代码了

import xlwings as xw

wb = xw.Book('test.xls')
sheet = wb.sheets['Sheet1']

#将sheet1工作表复制到该工作簿的同一工作表的前面
sheet.api.Copy(Before=sheet.api)

#将sheet1工作表复制到新建工作簿中
sheet.api.Copy()

#将sheet1工作表复制到该工作簿的最后一个工作表后面
sheet2 = wb.sheets[-1]
sheet.api.Copy(After=sheet2.api)

#将sheet1工作表复制到另外一个工作簿dst.xls中最后个工作表之后
wb_dst=xw.Book("dst.xls")
ws_dst=wb_dst.sheets[-1]
sheet.api.Copy(After=ws_dst.api)

记住最后一个案例:

import xlwings as xw

wb = xw.Book('test.xls')
sheet = wb.sheets['Sheet1']

#将sheet1工作表复制到另外一个工作簿dst.xls中最后个工作表之后
wb_dst=xw.Book("dst.xls")
ws_dst=wb_dst.sheets[-1]
sheet.api.Copy(After=ws_dst.api)

最后说第二个方法:xlwings0.22以上版本的原生copy方法,贴上官方链接

https://docs.xlwings.org/en/stable/whatsnew.html#v0-22-0-jan-29-2021

v0.22.0 (Jan 29, 2021)

  • [Feature] While it’s always been possible to somehow create your own xlwings-based add-ins, this release adds a toolchain to make it a lot easier to create your own white-labeled add-in, see Custom Add-ins (GH1488).
  • [Enhancement] xw.view now formats the pandas DataFrames as Excel table and with the new xw.load function, you can easily load a DataFrame from your active workbook into a Jupyter notebook. See Jupyter Notebooks: Interact with Excel for a full tutorial (GH1487).
  • [Feature] New method mysheet.copy() (GH123).
  • PRO [Feature]: in addition to xw.create_report(), you can now also work within a workbook by using the new mysheet.render_template() method, see also xlwings Reports (GH1478).

 https://docs.xlwings.org/en/stable/api.html#xlwings.Sheet.copy

Sheet

classxlwings.Sheet(sheet=Noneimpl=None)

A sheet object is a member of the sheets collection:

copy(before=Noneafter=Nonename=None)

Copy a sheet to the current or a new Book. By default, it places the copied sheet after all existing sheets in the current Book. Returns the copied sheet.

New in version 0.22.0.

Parameters:
  • before (sheet objectdefault None) – The sheet object before which you want to place the sheet
  • after (sheet objectdefault None) – The sheet object after which you want to place the sheet, by default it is placed after all existing sheets
  • name (strdefault None) – The sheet name of the copy
Returns:

Sheet object – The copied sheet

Return type:

Sheet

Examples

# Create two books and add a value to the first sheet of the first book
first_book = xw.Book()
second_book = xw.Book()
first_book.sheets[0]['A1'].value = 'some value'

# Copy to same Book with the default location and name
first_book.sheets[0].copy()

# Copy to same Book with custom sheet name
first_book.sheets[0].copy(name='copied')

# Copy to second Book requires to use before or after
first_book.sheets[0].copy(after=second_book.sheets[0])

 

  • 6
    点赞
  • 57
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
xlwings是一款用于PythonExcel之间互操作的库。使用xlwings可以很方便地对Excel工作进行拆分。 首先,我们需要安装xlwings库,并在Python脚本中导入它。然后,我们可以使用xlwings提供的函数来操作Excel工作。 要拆分工作,我们可以使用xlwings中的Sheet和Range对象。首先,我们可以使用Sheet对象的方法```add()`来创建一个新的工作。例如,我们可以通过以下方式创建一个名为"新工作"的工作: ``` new_sheet = workbook.sheets.add(name='新工作') ``` 接下来,我们可以使用Range对象的方法```value```来获取原始工作中的数据。例如,我们可以使用以下代码复制原始工作中A1到B10的所有数据到新的工作中: ``` old_range = workbook.sheets['原始工作'].range('A1:B10') new_range = new_sheet.range('A1:B10') new_range.value = old_range.value ``` 以上代码将会把原始格A1到B10的数据复制到新工作的A1到B10位置。这样,我们就成功将原始工作拆分成了一个新的工作。 我们还可以根据需要对数据进行处理、筛选或修改,再将其复制到新的工作中。例如,我们可以使用xlwings提供的函数来进行数据过滤、排序等操作。 总结起来,使用xlwings,我们可以通过创建新的工作复制、处理原始工作中的数据,实现对Excel工作的拆分。这样,我们可以根据需要对数据进行管理、分析和处理,提高工作效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值