调用wps可能不行,但是你可以用python的第三方库,创建execl的,然后wps打开这些execl就可以的
或者看看wps官方有开放api吗
调用wps可能不行,但是你可以用python的第三方库,创建execl的,然后wps打开这些execl就可以的
或者看看wps官方有开放api吗
onlyoffice开源的,看看能不能直接从源码接入创建修改excel文件。
网上N多python建立excel文件的方法,但还是得引入至少三个python库文件才行
从描述来,完全不需要打开wps呀,python本来就有直接对excel表格进行操作的库
有些excel文件,使用pandas或者openpyxl都出错,必须使用wps打开和保存一下,然后,再用pandas和openpyxl读写就不出错了。
从单位网站下载生成的数据报表(excel文件),直接使用Python的openpyxl或pandas等库打开总是出现异常。但是使用wps打开excel文件仅做一下保存,再使用openpyxl或pandas等库打开就正常了。
def excelfile_open_save(file_path):
os_name = platform.system()
# 根据操作系统不同,导入不同的调用wps应用的库及相关操作
if os_name == "Windows":
# 需要Python的环境安装win32.com,安装命令:pip install win32.com
# 导入
try:
import win32com.client as win32
# 调用wps打开一个excel文件并重新保存一下
app = win32.DispatchEx('Excel.Application') # 启动独立的进程,关闭时不影响其他文件
app.Visible = False # 不打开excel界面
app.DisplayAlerts = False # 不显示警告信息
wb = app.Workbooks.Open(file_path)
wb.Save()
wb.Close()
app.Quit()
except Exception as e:
QMessageBox.information(None,'出错了','调用win32com库出错,也许是没有安装,可以尝试执行pip install win32.com!')
elif os_name == "Linux":
# /////////////////////////////////
# 方法一
# /////////////////////////////////
# 导入模块
# import subprocess, signal
# # 调用wps
# try:
# # 定义WPS路径,linux环境变量中有wps
# wps_path = 'wps'
# # 启动WPS进程并打开指定文件,不弹出WPS界面
# cmd = [wps_path, '--headless', file_path]
# process = subprocess.Popen(cmd)
#
# # 等待一段时间以确保WPS进程完全启动并打开文件
# time.sleep(2) # 等待时间根据实际情况调整
#
# # 保存文件,这里通过发送Ctrl+S快捷键的方式来保存文件
# # 注意:这种方式依赖于WPS处理快捷键的方式,不同版本的WPS可能有差异
# print("正在保存文件...")
# time.sleep(2) # 等待一段时间以确保WPS准备好接收键盘输入
# process.send_signal(signal.SIGUSR1) # 发送SIGUSR1信号模拟按下Ctrl键
# time.sleep(1) # 等待一段时间以确保Ctrl键已按下
# process.send_signal(signal.SIGUSR2) # 发送SIGUSR2信号模拟按下S键
# time.sleep(1) # 等待一段时间以确保S键已按下
# process.send_signal(signal.SIGUSR1) # 发送SIGUSR1信号模拟松开Ctrl键
#
# return True
# except Exception as e:
# print(f"出现错误: {e}")
# return False
# finally:
# process.kill() # 关闭WPS进程
# /////////////////////////////////
# 方法二
# /////////////////////////////////
from pywpsrpc.rpcetapi import createEtRpcInstance, etapi
'''open excel '''
# 这里仅创建RPC实例
hr_excel, rpc_excel = createEtRpcInstance()
hr_excel, app_excel = rpc_excel.getEtApplication()
workbooks = app_excel.Workbooks
# 打开指定表格文件
hr, workbook = workbooks.Open(file_path)
workbook.Close(SaveChanges=True) # 关闭并保存excel文件
app_excel.Quit() # 关闭wps
使用上面定义的excelfile_open_save(file_path),可以调用wps打开及保存一个excel文件。如下问题:
1、在window平台,可以对用户不显示wps打开文件的界面,但是在linux平台,无论是方法一还是方法二,都会显示excel文件打开的窗口。
2、在linux平台,使用方法二,python编写的程序中需要2次调用wps打开2个excel文件及保存后退出,编写一个shell文件(hn.sh)激活环境及调用python运行代码,在终端执行source hn.sh文件,在代码第一次调用wps打开excel文件,wps打开后会卡死,手动结束wps进程,python程序正常运行,第二次调用wps正常打开及保存和退出。而且如果是在pycharm中执行,则没有上面问题,运行正常。
不知道是什么原因?
Popular Events
More
deepin23 ,python ,如何后台调用wps,打开excel文件,及保存文件,不显示wps被打开的界面。