使用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")
		
		... 
		...
相关推荐
whcyhhh7 小时前
头歌实践教学平台:数据科学与大数据技术导论(十二)
大数据·开发语言·python·数据清洗
qq_316411038 小时前
专业的腹腔镜医疗器械物联网APP开发服务商
python
阿童木写作8 小时前
跨境电商翻译利器,批量图片视频翻译+智能抠图工具
python·音视频
绘梨衣5479 小时前
异步任务队列-学习2
爬虫·python·学习·任务队列
用户8356290780519 小时前
使用 Python 在 Excel 中插入 OLE 对象
后端·python
one3129 小时前
高精度MEMS电容式倾角传感器:原理、结构与Python三维可视化
开发语言·python
深蓝海拓10 小时前
基于QtPy (PySide6) 的PLC-HMI工程实战记录(七)创建适合HMI项目的数字输入/显示类部件
python
MartinYeung511 小时前
[论文学习]MPIB:医疗提示注入基准——针对LLM临床安全性的系统性评估
人工智能·python·学习
用户83562907805111 小时前
使用 Python 为 PowerPoint 演示文稿添加评论
后端·python