主题
Python✖️表格
金山文档的表格产品中引入了执行 Python 脚本能力,以期为用户提供一种更加灵活、高效的数据处理方式。
提示 📢
经过邀请内测阶段的完善和稳定,PY脚本编辑器正式推出
现在,您可以尽情体验这款基于智能表格
&表格
之上功能强大的Python编辑器了
无论您是Python新手,还是资深开发者,让我们一同探索这无限可能吧❣️
主要特点
1. 脚本内嵌在文档中
与文档数据无缝结合,跟随文档一同分享协作。
2. 云端工作
云端编码,云端执行,无需本地开发环境。
3. 丰富的第三方库支持
- 数据操作与分析: Pandas、NumPy
- 数据可视化: pyecharts
- 金融数据: akshare、tushare、baostock
4. 全面支持AirScript API宏写法
完全兼容AirScript API宏写法,提供了2000+API,极大地扩展了您的开发能力。无需重新学习新的API定义,即可在WPS端和在线表格使用同样的API开发脚本。更多API文档请参考访问工作表目录下API的相关说明。
🚀更快的执行速度
我们对AirScript API调用速度进行了优化,使您的脚本运行更加高效,响应更加迅速。对于需要频繁调用API的大型脚本项目,这种性能提升尤为显著。如:循环对10000个单元格设置值为100。
python
# 循环对10000个单元格设置值为100
import time
start = time.time()
for i in range(1, 10000):
ActiveSheet.Range(f"A{i}").Value2 = 100
end = time.time()
print(end - start)
🌐全面支持现代 Python 语法
全面支持现代 Python 语法,让您的开发体验更加现代和高效。特别对于复杂的脚本项目,代码编写维护更方便。
python
# 支持迭代器写法
for cell in Range("A1:A10"):
cell.Value2 = 100
🔱支持读写多个表格数据
支持多个文档的读取和写入,支持普通表格和智能表格,若要读取其他表格数据,需要指定对应表格的文件ID和类型,普通表格类型为et,智能表格类型为ksheet。
python
# 操作其他表格
testObj = Workbooks.Open("cgudj***fElj", "et")
testObj.Application.Range("A1").Value2 = 100
print(testObj.Application.Range("A1").Value2)
文件ID获取如下图:

开始使用
使用 Python脚本编辑器前,请先在金山文档
上新建或打开一个已有的智能表格
或表格
文件
在智能表格
/表格
文件中顶部信息区,选择效率
> PY脚本编辑器
打开PY脚本编辑器
功能的侧边栏后,可以看到文档内已经存在的Python文件和模板
点击新建脚本
,创建Python文件,进入Python编辑栏,进行代码编辑
开始之前,也可以点击下面的模板
,参考模板示例,了解表格中Python的使用
使用Python访问表格里的数据
注意
金山文档的表格类产品中有工作表
和数据表
的区别,不同的表格类型,读取/写入数据要使用的函数是不同的。
访问工作表数据
在工作表中,可以使用区域选择器,选择要访问的数据范围。在编辑代码的过程中,可以随时通过点击编辑栏上方的操作表格区域
,唤起下拉菜单,点击对应函数菜单唤起对应功能区域选择器。
也可以直接使用内置的xl()
函数,来访问工作表里的数据。例如:若要访问当前工作表的A1到G10单元格,可以使用xl("A1:G10")
。xl()
函数将返回一个包含选区内数据的pandas.DataFrame
对象。
python
df = xl("A1:G10")
# 返回表格中A1:G10的数据的pandas.DataFrame对象
print(df)
更多关于xl()
函数的用法,请参考附录xl()函数部分的介绍。
访问数据表数据
可以使用内置的dbt()
函数,来访问数据表里的数据。例如:若要访问当前数据表的全部数据,可以使用dbt()
。dbt()
函数会返回一个包含数据表内全部记录的pandas.DataFrame
对象。
Python
df = dbt()
# 返回一个包含数据表内全部记录的pandas.DataFrame对象
print(df)
更多关于dbt()
函数的用法,请参考附录dbt()函数部分的介绍。
回写数据到工作表
可以通过内置的write_xl()
函数,将数据回写到工作表。例如,将一个 pandas.DataFrame
类型的对象 df
回写到当前工作表的 A1 位置,可以使用write_xl(df, "A1")
,它将在 A1 单元格所在的位置,逐行写入df
中的数据。
python
# 将 df 回写到当前工作表的 A1 位置,逐行写入数据
import pandas as pd
nums = [1, 22, 333]
df = pd.DataFrame(nums)
write_xl(df, "A1")
更多关于write_xl()
函数的用法,请参考附录write_xl()函数部分的介绍。
回写数据到数据表
数据表组织数据的方式与传统的工作表不同,因此回写数据的方式也有区别:
注意
对数据表的回写,目前函数提供的支持是不完备的。请根据需要酌情使用。
由于数据表中的某些字段类型是对象,这些字段的值在回写时,会被忽略或修改成简单类型。请参考附录数据表字段类型部分的介绍。
1. 添加记录
可以使用insert_dbt()
函数,向数据表中添加记录。例如,使用insert_dbt
将一条姓名为张三,年龄为20
的记录添加到数据表,它将在当前数据表的末尾添加一条新的记录。
python
insert_dbt({"姓名": "张三", "年龄": 20})
更多关于insert_dbt()
函数的用法,请参考附录insert_dbt()函数部分的介绍。
2. 更新记录
可以使用update_dbt()
函数,更新数据表中的记录。例如,更新一条ID
为D
的记录,可以使用:
python
update_dbt({"_rid": "D", "年龄": 25})
更多关于update_dbt()
函数的用法,请参考附录update_dbt()函数部分的介绍。