Unity Excel转Json工具实现多语言本地化

Unity Excel转Json工具实现多语言本地化文章介绍Unity3d添加工具,实现excel转json功能

大家好,又见面了,我是你们的朋友全栈君。

  1. 创建脚本文件,继承自EditorWindow
public class LocalizationTool : EditorWindow
  1. 添加至工具栏;
[MenuItem("Tools/LocalizationTool")]
  1. 实现操作界面;
    图3.1
    代码如下:
private void OnGUI()
    { 
   
        GUILayout.Space(15);
        GUILayout.BeginHorizontal();
        GUILayout.Label("Excel目录:", EditorStyles.boldLabel, GUILayout.Width(80));
        GUILayout.TextField(excelPath);
        if (GUILayout.Button("浏览", GUILayout.Width(50)))
        { 
   
            SelectExcelPath();
        }
        GUILayout.EndHorizontal();

        GUILayout.Space(5);
        GUILayout.BeginHorizontal();
        GUILayout.Label("Json目录:", EditorStyles.boldLabel, GUILayout.Width(80));
        GUILayout.TextField(jsonPath);
        if (GUILayout.Button("浏览", GUILayout.Width(50)))
        { 
   
            SelectJsonPath();
        }

        GUILayout.EndHorizontal();

        GUILayout.Space(30);
        GUILayout.BeginHorizontal();
        GUILayout.Label("");
        if (GUILayout.Button("Localization", GUILayout.Width(100)))
        { 
   
            ExcelToJson();
        }
        GUILayout.Label("");
        GUILayout.EndHorizontal();
    }
  1. 实现Excel转Json;
private void ExcelToJson()
{ 

Debug.Log(excelPath);
if (!Directory.Exists(excelPath))
{ 

Debug.Log("路径不存在");
}
DirectoryInfo info = new DirectoryInfo(excelPath);
FileInfo[] files = info.GetFiles();
for (int i = 0; i < files.Length; i++)
{ 

bool b1 = files[i].Name.EndsWith(".xls");
bool b2 = files[i].Name.EndsWith(".xlsx");
bool b = b1 || b2;
if (File.Exists(files[i].FullName) && b)
{ 

var wk = WorkbookFactory.Create(files[i].FullName);
for (int j = 0; j < wk.NumberOfSheets; j++)
{ 

ISheet sheet = wk.GetSheetAt(j);
if (sheet.LastRowNum > 0)
{ 

var row_0 = sheet.GetRow(0);
if (row_0 != null &&  row_0.LastCellNum > 1)
{ 

for (int l = 0; l < row_0.LastCellNum - 1; l++)
{ 

var t = new Dictionary<string, object>();
var path = "";
var lst = new List<Dictionary<string, object>>();
for (int k = 1; k <= sheet.LastRowNum; k++)
{ 

var r = new Dictionary<string, object>();
IRow row = sheet.GetRow(k);
if (row != null)
{ 

r[row_0.GetCell(0).ToString()] = row.GetCell(0).ToString();
r["textContent"] = row.GetCell(l + 1).ToString();
path = row_0.GetCell(l + 1).ToString();
}
lst.Add(r);
}
t.Add("data", lst);
string output = JsonConvert.SerializeObject(t, Formatting.Indented);
File.WriteAllBytes(getTargetFilePath(jsonPath, Path.GetFileNameWithoutExtension(files[i].Name), path), Encoding.UTF8.GetBytes(output));
}
}
}
}
}
}
}
    private static string getTargetFilePath(string filePath, string fileName, string fileType)
{ 

var b1 = Path.GetFileNameWithoutExtension(fileName) + "_" + fileType;
filePath = Path.Combine(filePath, string.Format("{0}.json", b1));
return filePath;
}

Excel文件如下:
excel示例
生成的json文件如下:
Json列表示例
json文件内容示例

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/139992.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 【吐血整理】Java项目源码分享

    【吐血整理】Java项目源码分享javaservlet+jsp+bean开发开源宅商城系统,未用任何java开源框架实例(七),电商书店,源码下载:jsp+servlet仿当当网电商图书系统实例(八),源码下载:jsp+javabean+servlet开发的mvc简易鞋城在线商城系统各种管理系统:=======实例(一):学生信息管理系统,源码下载:GitHub-yirenyin/J2EE_practice:J2EE学生信息管理系统初级版实例(二):图书馆管理系统,源码下载:1、图书馆管理系统JSP+Ser

  • 关于PHP在企业中处理数字加减乘除和对比运算方案

    关于PHP在企业中处理数字加减乘除和对比运算方案

  • JS数组扁平化_扁平化js

    JS数组扁平化_扁平化jsJS 扁平化 (flatten) 数组

  • mysql开启慢日志查询_MySQL慢sql检验生效

    mysql开启慢日志查询_MySQL慢sql检验生效MySQL给我们提供了一个很好的功能,那就是慢查询!所谓的慢查询就是通过设置来记录超过一定时间的SQL语句!那么如何应用慢查询呢?1.开启MySQL的慢查询日志功能默认情况下,MySQL是不会记录超过一定执行时间的SQL语句的。要开启这个功能,我们需要修改MySQL的配置文件:windows下修改my.ini,(注册表,计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentCo…

    2022年10月14日
  • asf如何在linux运行,linux环境下使用mono运行asf挂卡

    asf如何在linux运行,linux环境下使用mono运行asf挂卡杰瑞包大好评啊,但是带来的后果就是挂卡挂不完了。然而手里的服务器全是linux环境的并不支持C#写的ASF,所以用monof**k之。Ubuntu篇接下来介绍如何安装mono,以Ubuntu14.04为例。1.运行下面代码授权注册repo源并更新软件列表:$sudoapt-keyadv–keyserverkeyserver.ubuntu.com–recv-keys3FA7E…

    2022年10月25日
  • 有关软件设计师的报名问题及答案_软件设计师软考

    有关软件设计师的报名问题及答案_软件设计师软考下面是青岛人才市场的联系地址和电话 青岛市中高级人才市场海尔路178号889166728891667088916679 中国青岛人才大市场山东路171号856329738564389885636580 贵州路人才市场贵州路69号一楼咨询:82685619 城阳人才市场(人才交流中心)城阳正阳路222号87868756 胶南市人才交流服务中心新华路8

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号