terrybekhcam 2021-09-27 23:47 采纳率: 63.6%
浏览 216
已结题

python xlwings api 可以复制EXCEL单元格内容吗?

python xlwings api 可以复制工作表和行、列,那么可以复制单元格内容吗?
用COPY 复制行、表、列,我都会了,但一到复制单元格内容就报错
我想把格式,字体等属性一起复制过来,所以要用COPY,不能用赋值的形式
但一复制就报错,请问何解?谢谢!

img

import os
import xlwings as xw
app = xw.App(visible = True, add_book = False)
file_name = 'C:\\Users\\Administrator\\Desktop\\测试\\统计表.xlsx'
wb = app.books.open(file_name)
sh = wb.sheets[0]
scope = sh.range('A1').expand()
ad = sh.range(scope.shape[0]+1,1)
# sh.range('E8').current_region.value.api.copy sh.range('A11')
sh.api.Columns('E:E').Copy(sh.api.Columns('F:F'))
sh.api.range('E14').Copy(sh.api.range('E15'))
wb.save()
wb.close
app.quit()
  • 写回答

2条回答 默认 最新

  • 我不是玉 2021-09-28 10:25
    关注

    xlwings 模块封装了 win32com 模块,二者功能有所重叠,所以使用 API 时注意主体是什么类型对象。例如

    • shxlwings 的工作表对象;而
    • sh.api 是被封装的 win32com 原始工作表对象

    具体到你这个问题,以下两种修改方式任选其一即可:

    • 使用 win32com API:大写 range 首字母 -> Range

      sh.api.Range('E14').Copy(sh.api.Range('E15'))
      
    • 使用 xlwings API:去掉 api,同时小写 Copy 首字母 -> copy

      sh.range('E14').copy(sh.range('E15'))
      

    在不查询API的前提下,怎么区分呢?只需记住一点,直接创建的 xlwings 对象的API基本是首字母小写的,而通过 api 属性获取到的是 win32com 原始对象,其API基本都是大写字母开头的。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 10月6日
  • 已采纳回答 9月28日
  • 创建了问题 9月27日

悬赏问题

  • ¥15 PointNet++的onnx模型只能使用一次
  • ¥20 西南科技大学数字信号处理
  • ¥15 有两个非常“自以为是”烦人的问题急期待大家解决!
  • ¥30 STM32 INMP441无法读取数据
  • ¥15 R语言绘制密度图,一个密度曲线内fill不同颜色如何实现
  • ¥100 求汇川机器人IRCB300控制器和示教器同版本升级固件文件升级包
  • ¥15 用visualstudio2022创建vue项目后无法启动
  • ¥15 x趋于0时tanx-sinx极限可以拆开算吗
  • ¥500 把面具戴到人脸上,请大家贡献智慧,别用大模型回答,大模型的答案没啥用
  • ¥15 任意一个散点图自己下载其js脚本文件并做成独立的案例页面,不要作在线的,要离线状态。