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

embedded/2024/10/22 15:39:46/

背景:游戏开发中, 策划使用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=str)#数据的行、列数
row, column = df.shapewith open('config.lua', 'w', encoding="utf-8") as file:file.write("Items = {\n")#遍历所有行 每一行是一条 ItemDatafor 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 pandasef = pandas.ExcelFile(".//配置表.xlsx")
for name in ef.sheet_names:# read_excel的参数1也可以使用ExcelFiledf = pandas.read_excel(ef, name, header=0, dtype=str)#数据的行、列数row, column = df.shapewith open('config.lua', 'w', encoding="utf-8") as file:file.write(name)file.write(" = {\n")... ...

http://www.ppmy.cn/embedded/105071.html

相关文章

Windows Docker 部署 Java Jar 包

一、简介 Docker 是一种流行的容器化平台,可以用于部署各种类型的应用程序,包括 Java 项目中的 JAR 文件。今天讲的是 Windows Docker 部署 JAR 项目的基本教程。 二、示例项目 这里以基于 Java 语言的 XXL-JOB 项目为例,使用里面 xxl-job…

《“草莓”引领风潮:全能AI与专业型AI的未来市场较量》

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

笔记:如何使用Process Explorer分析句柄泄露溢出问题

一、目的:如何使用Process Explorer分析句柄泄露溢出问题 使用 Process Explorer 分析句柄泄漏问题是一个非常有效的方法。句柄泄漏通常是由于应用程序在创建系统资源(如文件、注册表项、GDI 对象等)后没有正确释放这些资源。以下是使用 二、…

Ei、Scopus双检索 | 2025年第四届人工智能与机器学习前沿国际会议

会议简介 Brief Introduction 2025年第四届人工智能与机器学习前沿国际会议(FAIML 2025) 会议时间:2025年4月25日-27日 召开地点:中国沈阳 大会官网:www.faiml.org FAIML 2025 将围绕“人工智能与机器学习”的最新研究成果展开,为…

19.神经网络 - 线性层及其他层介绍

神经网络 - 线性层及其他层介绍 1.批标准化层–归一化层(不难,自学看官方文档) Normalization Layers torch.nn — PyTorch 1.10 documentation BatchNorm2d — PyTorch 1.10 documentation 对输入采用Batch Normalization,可…

C# SM2 SM3 SM4 使用

目录 效果 SM2 SM3 SM4 项目 代码 SM2Utils.cs Sm3Utils.cs Sm4Utils.cs 下载 效果 SM2 公钥:04ca3e272e11b5633681cb0fbbfd8c162be08918ce5b644cd33d49c17be8674caf6c20a11de8b65333924dfe7d42246abb4a4c36b663bef1aafc624a35acf4d2b1 私钥:…

Nginx SSL密码短语配置指南:增强负载均衡安全性

在Nginx负载均衡配置中,使用SSL密码短语(也称为SSL密码)为HTTPS连接提供了额外的安全性。SSL密码短语通常用于保护私钥文件,确保只有授权用户才能访问和使用它们。本文将详细介绍如何在Nginx中配置SSL密码短语,包括证书…

Java项目: 基于SpringBoot+mysql大学生租房平台(含源码+数据库+开题报告+毕业论文)

一、项目简介 本项目是一套基于SpringBootmysql大学生租房平台 包含:项目源码、数据库脚本等,该项目附带全部源码可作为毕设使用。 项目都经过严格调试,eclipse或者idea 确保可以运行! 该系统功能完善、界面美观、操作简单、功能…