使用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")
		
		... 
		...
相关推荐
Good_tea_h28 分钟前
如何实现Java中的多态性
java·开发语言·python
IT毕设梦工厂1 小时前
计算机毕业设计选题推荐-项目评审系统-Java/Python项目实战
java·spring boot·python·django·毕业设计·源码·课程设计
零 度°1 小时前
Qiskit:量子计算的Python工具包
python
飘逸高铁侠1 小时前
使用Python实现多个PDF文件的合并
开发语言·python·pdf
yuvenhol2 小时前
火山引擎大模型语音合成双向流式-python demo
开发语言·python·火山引擎
~在杰难逃~2 小时前
Day15笔记-函数返回值&函数的封装&匿名函数
开发语言·笔记·python·pycharm·数据分析
月巴月巴白勺合鸟月半3 小时前
一个关于Excel的段子
c#·excel·erp
计算机学姐3 小时前
基于python+django+vue的农业管理系统
开发语言·vue.js·后端·python·django·pip·web3.py
洪大宇3 小时前
Windows Python 指令补全方法
开发语言·python
爱技术的小伙子3 小时前
【30天玩转python】面向对象编程基础
开发语言·python