Python使用xlwings操作wps表格的个人心得

因自己的电脑没有装office,在用Python调用xlwings来操作Word文档时总会出现一些奇奇怪怪的错误,查资料发现网上千篇一律都是一样的内容,而且无法解决实质性的问题,于是只能自己琢磨,终于弄出来一个还可以用用的demo

鉴于WPS的API文档实在难以找到,我就直接在这里贴上连接吧,方便后续诸位同学查询:WPS的API跳转链接

1、安装所依赖的库:

pip install xlwings 
pip install win32com

当然如果觉的安装太慢可以使用国内的源,在安装命令后加个 -i 然后接国内源地址就行了

pip install xlwings  -i https://pypi.douban.com/simple/

2、Python国内镜像地址:

1.阿里云:https://mirrors.aliyun.com/pypi/simple/
2.豆瓣:https://pypi.douban.com/simple/
3.清华大学:https://pypi.tuna.tsinghua.edu.cn/simple/(推荐)
4.中国科学技术大学 http://pypi.mirrors.ustc.edu.cn/simple/
5.华中理工大学:http://pypi.hustunique.com/
6.山东理工大学:http://pypi.sdutlinux.org/

3、创建 WPS 的 Excel 文档

报错信息:pywintypes.com_error: (-2147221005, ‘无效的类字符串‘, None, None)xlwings报错
解决方法如下:

#!/usr/bin/env python
# -*- coding:utf-8 -*-

# 首先当然是先引入对应的包
import os
import xlwings as xw
from win32com.client import Dispatch

def create_excel():
	create_path =./WPS/Excel”				# 所要创建表格的目录地址
	# 为了避免直接修改库自带的源码,就研究了下源码,发现只要引入impl就可以了
    # noinspection PyProtectedMember
    xl = xw._xlwindows.COMRetryObjectWrapper(Dispatch("Ket.Application"))
    # noinspection PyProtectedMember
    impl = xw._xlwindows.App(visible=False, add_book=False, xl=xl)
    
    # 新建一个excel(visible为是否需要可视化,True为可视化,False为后台运行)
    app = xw.App(visible=True, add_book=False, impl=impl)
    BaseWorkBook = app.books.add()
    # 判断路径是否存在
    isExists = os.path.exists(create_path)
    isPath = os.path.isdir(create_path)
    if isExists and isPath:
    	BaseWorkBook.save(create_path + "/Workbook.xlsx")
    else:
    	os.mkdir(create_path)
    	BaseWorkBook.save(create_path + "/Workbook.xlsx")
    return BaseWorkBook

注意:鉴于很多同学电脑中只安装了WPS,从而导致创建excel文件时,在保存这一步骤时会报错 (-2147352573, ‘找不到成员。’, None, None),因为现在xlwings库对wps兼容性不够导致的,暂时没有想到合适的解决方案,所以只能暂时绕过这个操作,先使用openpyxl先新建一个excel文件,然后在继续用xlwings来操作,代码如下:

#!/usr/bin/env python
# -*- coding:utf-8 -*-

# 首先引入对应的包
import os
import openpyxl
import xlwings as xw
from win32com.client import Dispatch


def create_excel():
	create_path =./WPS/Excel”				# 所要创建表格的目录地址

	# 判断路径是否存在
    isExists = os.path.exists(create_path)
    isPath = os.path.isdir(create_path)
    if isExists and isPath:
    	newFilePath = create_path + "/Workbook.xlsx"
    else:
    	os.mkdir(create_path)
    	newFilePath = create_path + "/Workbook.xlsx"

	# 使用openpyxl先新建一个excel文件
 	wb = openpyxl.Workbook()
 	sh = wb[wb.sheetnames[0]]
 	sh.title = "Sheet1"
 	wb.save(newFilePath)
 	wb.close()

    xl = xw._xlwindows.COMRetryObjectWrapper(Dispatch("Ket.Application"))
    impl = xw._xlwindows.App(visible=False, add_book=False, xl=xl)
    
    # 新建一个excel(visible为是否需要可视化,True为可视化,False为后台运行)
    excelApp = xw.App(visible=True, add_book=False, impl=impl)
 	workbook = excelApp.books.open(newFilePath)
   
     return workbook

4、针对WPS中激活 Sheet 页

对于WPS激活Sheet页时,使用xlwings库常规的激活方式会报错,这个时候就需要用api的方式来规避这个问题

解决方法如下:

#!/usr/bin/env python
# -*- coding:utf-8 -*-

# 首先当然是先引入对应的包
import os
import xlwings as xw
from win32com.client import Dispatch

def active_sheet():
	excelPath =./WPS/Excel/test.xlsx”				# excel文件
	# 为了避免直接修改库自带的源码,就研究了下源码,发现只要引入impl就可以了
    # noinspection PyProtectedMember
    xl = xw._xlwindows.COMRetryObjectWrapper(Dispatch("Ket.Application"))
    # noinspection PyProtectedMember
    impl = xw._xlwindows.App(visible=False, add_book=False, xl=xl)
    
    # 新建一个excel(visible为是否需要可视化,True为可视化,False为后台运行)
    app = xw.App(visible=True, add_book=False, impl=impl)
    BaseWorkBook = app.books.open(excelPath)
    
    # 根据Sheet页名称激活Sheet页
	sheetName = "sheet页名称"
	sh = BaseWorkBook.sheets[sheetName]
	sh.api.Application.Sheets.Item(sheetName).Activate()
	
	# 根据Sheet位置激活Sheet页
	sheetIndex = 1		# sheet页位置
	sh = BaseWorkBook.sheets[sheetName]
	sh.api.Application.Sheets.Item(sh.name).Activate()
要在WPS使用xlwings,可以使用以下方法之一: 1. 使用参数spec:可以通过在xlwings的Workbook.open()函数中传递spec参数来指定要使用的Excel应用程序。具体代码如下所示: ``` import xlwings as xw app = xw.App(visible=False, add_book=False) wb = xw.Book("path/to/your/file.xlsx", app=app, spec="wps") ``` 这样就可以在WPS中打开Excel文件并使用xlwings进行读写操作了。 2. 使用api方式:如果在激活Sheet页时遇到问题,可以使用xlwings的API方式来规避这个问题。具体代码如下所示: ``` import xlwings as xw app = xw.App(visible=False, add_book=False) wb = xw.Book("path/to/your/file.xlsx", app=app) ws = wb.api.Worksheets("Sheet1") ws.Activate() ``` 这样就可以通过API方式来激活Sheet页并进行相关操作,以避免在WPS使用xlwings时报错。 需要注意的是,以上方法都需要先安装好xlwings库,并且确保你的电脑上已经安装了WPS软件。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [python使用xlwings操作wps](https://blog.youkuaiyun.com/oldman_g/article/details/124022289)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [Python使用xlwings操作wps表格个人心得](https://blog.youkuaiyun.com/weixin_42466638/article/details/126776376)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梦落影逝

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值