使用python导出Excel表格中的lua配置

背景:游戏开发中, 策划使用Excel配置游戏中的参数数据,写一个工具用于导出这些配置

工具选择使用 python来开发,这样Windows、macOS、Linux平台都可以使用,而且有丰富的第三方模块。

本机先安装python,我这边使用的是python3.10.6。

确定Excel的结构

假设我们需要的配置是这种结构的:

lua 复制代码
Items = {
	[1001] = { id = 1001, name = "新手武器", level = 1, attrs = { atk = 10 }, icon = "resource/items/1001.png" },
	[1002] = { id = 1002, name = "新手衣服", level = 1, attrs = { def = 10 }, icon = "resource/items/1002.png" },
	[1003] = { id = 1003, name = "新手护手", level = 1, attrs = { atk = 3, def = 3 }, icon = "resource/items/1003.png" }
}

表格中则为这样:

我们称每一个Items项为ItemData,第一行为ItemData的中所有的key,第一列为ItemData在Items表中的key,从第二行开始每一格填入所在列的key对应的值,然后我们直接以文本格式读取所有内容,用=号连接key和value即可。

文件命名为:道具表.xlsx,表单名先设置为lua配置的表名:Items。

生成配置文件config.lua的代码大概是这种模式:

python 复制代码
with open('config.lua', 'w', encoding="utf-8") as file:
    file.write("Items = {\n")

	#写入表格数据

    file.write("}")

生成文件:

读取Excel中的数据

Excel中的数据这里使用pandas模块来读取,然后写入config.lua中

先安装padas:pip install pandas

python 复制代码
import pandas

#参数1是Excel文件路径
#参数2是表单名 
#参数header=n表示表头在第n+1行,没有表头则不填,我们这里表头在第一行所以填0
#参数dtype="str"表示格子内的数据按字符串格式读取
#返回值是pandas读取表单生成的DataFrame
df = pandas.read_excel(".//配置表.xlsx", "Items", header=0, dtype="string")

#数据的行、列数
row, column = df.shape

with open('config.lua', 'w', encoding="utf-8") as file:
    file.write("Items = {\n")

    #遍历所有行 每一行是一条 ItemData
    for r in range(row):
        row_data = df.iloc[r,:]

        #第一列是ItemData 的 key
        #df.columns 是表头内容
        key = row_data[df.columns[0]]
        file.write(f"[{key}]=")
        file.write("{")
    
        #遍历所有列 
        for c in range(column):
            sub_key = df.columns[c]
            sub_value = row_data[sub_key]
            file.write(f"{sub_key} = {sub_value}, ")

        file.write("},\n")


    file.write("}")

导出所有表单

pandas可以通过下述方法遍历sheet列表:

python 复制代码
import pandas

ef = pandas.ExcelFile(".//配置表.xlsx")
for name in ef.sheet_names:
	# read_excel的参数1也可以使用ExcelFile
	df = pandas.read_excel(ef, name, header=0, dtype="string")
	
	#数据的行、列数
	row, column = df.shape
	
	with open('config.lua', 'w', encoding="utf-8") as file:
		file.write(name)
	    file.write(" = {\n")
		
		... 
		...
相关推荐
AI玫瑰助手12 分钟前
Python函数:默认参数的定义与注意事项
开发语言·python·信息可视化
weixin_4684668516 分钟前
全局与局部注意力机制新手实战指南
人工智能·python·深度学习·算法·自然语言处理·transformer·注意力机制
小糖学代码36 分钟前
LLM系列:环境搭建:5.Python-dotenv 环境变量管理
人工智能·python·深度学习·神经网络
智慧物业老杨1 小时前
智慧物业合同周期管理系统:从风险预警到智能交接的全流程数智化落地方案
java·人工智能·python
橙橙笔记1 小时前
Python的学习第一部分
python·学习
voidmort2 小时前
3. 微调(Fine-tuning)与强化学习(RL)的核心思想
python·深度学习·算法
biter down3 小时前
基于 Pywinauto 的 QQ 音乐 GUI 自动化测试实践
python
人道领域3 小时前
【LeetCode刷题日记】669.修剪二叉搜索树
开发语言·python·算法
EntyIU4 小时前
mineru从安装部署到测试使用完整指南
python·ocr
安替-AnTi4 小时前
厚朴 APK 搜索接口分析
python·apk·解析·taobao