当前位置: 首页 > news >正文

营销型网站开发广西网站建设制作

营销型网站开发,广西网站建设制作,南川区城乡建设委员会网站,腾讯云wordpress密码忘记思路介绍 借助EPPlus读取Excel文件中的配置数据,根据指定的不同类型的数据配置规则来解析成对应的代码文本,将解析出的字符串内容写入到XXX.lua.txt文件中即可 EPPlus常用API //命名空间 using OfficeOpenXml;//Excel文件路径 var fileExcel new File…

思路介绍

借助EPPlus读取Excel文件中的配置数据,根据指定的不同类型的数据配置规则来解析成对应的代码文本,将解析出的字符串内容写入到XXX.lua.txt文件中即可

EPPlus常用API

//命名空间
using OfficeOpenXml;//Excel文件路径
var fileExcel = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);//加载Excel数据资源
var excelPackage = new ExcelPackage(fileExcel);//工作表列表
var sheetList = excelPackage.Workbook.Worksheets;foreach (var sheet in sheetList)
{var sheetName = sheet.Name;//工作表名称var rowCount = sheet.Dimension.Rows;//总行数var columnCount = sheet.Dimension.Columns;//总列数for (var i = 4; i <= rowCount; i++){for (var j = 1; j <= columnCount; j++){//获取第几行第几列的数据var value = sheet.GetValue(i, j);}}
}

制定Excel数据类型配置规则

编写导表工具之前,需要和策划、后端沟通制定数据配置规则

例如:

类型

标记

数值型

number

布尔型

bool

字符串

string

列表

list<type>

type支持:number,bool,string

示例:2,3,4

字典

dic<key|value>

type支持: number,bool,string

示例:语文|88;数学|91;英语|67

 

导入EPPlus.dll


在Unity的Assets下创建Plugins文件夹,并将EPPlus.dll文件放到该文件夹中

核心代码

using System.Collections.Generic;
using System.IO;
using System.Text;
using UnityEngine;
using OfficeOpenXml;
using UnityEditor;public class ExcelToLua
{//Excel导表文件路径public static readonly string ExcelFolderPath = "D:\\Study\\Excel";//lua文件路径private static readonly string LuaFolderPath = Path.Combine(Application.dataPath, "LuaScripts");//Table文件后缀拼接private const string LuaNameEnd = "Table.lua.txt";[MenuItem("新项目工具/导表工具/导入Excel表数据", false, 1)]static void ImportSingleExcelFile(){if (Directory.Exists(ExcelFolderPath)){var path = EditorUtility.OpenFilePanel("打开文件", ExcelFolderPath, "xlsx");if (path.Length != 0){CreateLuaFile(path);AssetDatabase.Refresh();}}}/// <summary>/// 获取Excel数据并创建Lua文件/// </summary>/// <param name="filePath"></param>public static void CreateLuaFile(string filePath){//Excel文件路径var fileExcel = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);//加载Excel数据资源var excelPackage = new ExcelPackage(fileExcel);//工作表列表var sheetList = excelPackage.Workbook.Worksheets;StringBuilder sb = new StringBuilder();//变量字典var variableDic = new Dictionary<int, string>();//变量类型字典var typeDic = new Dictionary<int, string>();var fileName = Path.GetFileName(filePath); //文件名称带后缀  例:A-活动_activity.xlssb.Append($"--{fileName}\nreturn {{\n");foreach (var sheet in sheetList){variableDic.Clear();typeDic.Clear();var sheetName = sheet.Name;//工作表名称var rowCount = sheet.Dimension.Rows;//总行数var columnCount = sheet.Dimension.Columns;//总列数//变量类型列表InitSheetDic(sheet, typeDic, 1);//变量列表InitSheetDic(sheet, variableDic, 2);sb.Append($"[\"{sheetName}\"] = {{\n");for (var i = 4; i <= rowCount; i++){for (var j = 1; j <= columnCount; j++){if (!typeDic.ContainsKey(j) || !variableDic.ContainsKey(j)){break;}var type = typeDic[j];var variable = variableDic[j];if (type == null || variable == null){continue;}//获取第几行第几列的数据var value = sheet.GetValue(i, j);var valueStr = GetTypeValue(type, value);if (j == 1){sb.Append($"    [{valueStr}] = {{");}sb.Append($"{variable} = {valueStr};");}sb.Append("};\n");}sb.Append("},\n");}sb.Append("}");var txtName = Path.GetFileNameWithoutExtension(filePath);var nameIndex = txtName.LastIndexOf('_');if (nameIndex != -1){txtName = txtName.Substring(nameIndex + 1);txtName = txtName.Substring(0, 1).ToUpper() + txtName.Substring(1);}//创建XXXTable文件File.WriteAllText($"{LuaFolderPath}\\{txtName}{LuaNameEnd}", sb.ToString());Debug.Log($"<color=#00EE00>{fileName}</color>表导入成功");sb.Clear();}//将Excel列表某一行的数据初始化到指定字典中private static void InitSheetDic(ExcelWorksheet sheet, Dictionary<int, string> dic, int rowNum){var columnSum = sheet.Dimension.End.Column;for (var i = 1; i <= columnSum; i++){var value = sheet.GetValue(rowNum, i);if (value == null)break;dic[i] = value.ToString();}}//根据不同类型的数据拼接对应格式的数据内容private static string GetTypeValue(string typeStr, object val){if (val == null)return GetDefaultValue(typeStr);var value = val.ToString();var result = value;switch (typeStr){case "number":case "bool":break;case "string":result = "\"" + value + "\"";break;case "list<number>":case "list<bool>":result = "{" + value + "}";break;case "list<string>":var strArray = value.Split(',');if (strArray.Length > 0){var sb = new StringBuilder();sb.Append("{");foreach (var item in strArray){sb.Append($"\"{item}\",");}sb.Append("}");result = sb.ToString();}break;default:if (typeStr.Contains("dic<")){if (typeStr.Contains("string")){var frontIndex = typeStr.IndexOf("string");var backIndex = typeStr.LastIndexOf("string");var isFront = frontIndex == 5;var isBack = backIndex == (typeStr.Length - 7);var strDic = value.Split(';');if (strDic.Length > 0){var sb = new StringBuilder();sb.Append("{");foreach (var item in strDic){var cell = item.Split("|");var frontStr = isFront ? "\"" + cell[0] + "\"" : cell[0];var backStr = isBack ? "\"" + cell[1] + "\"" : cell[1];sb.Append($"[{frontStr}] = {backStr},");}sb.Append("}");result = sb.ToString();}}else{var sb = new StringBuilder();var strDic = value.Split(';');if (strDic.Length > 0){sb.Append("{");foreach (var item in strDic){var cell = item.Split("|");sb.Append($"[{cell[0]}] = {cell[1]},");}sb.Append("}");result = sb.ToString();}}}else{result = "\"" + value + "\"";}break;}return result;}//如果某个数据未填,返回默认值private static string GetDefaultValue(string typeStr){string result;switch (typeStr){case "number":result = "0";break;case "bool":result = "false";break;case "string":result = "\"\"";break;default:if (typeStr.Contains("dic") || typeStr.Contains("list"))result = "{}";elseresult = "\"\"";break;}return result;}
}

小提示

1、在实际开发工作中,一般会用到导入单个或者所有的表两种逻辑。对于导出所有的表的逻辑,可以借助多线程来提高效率。

2、对于一些配置错误的情况也需要考虑到,增加一些报错逻辑判断并提示。


文章转载自:
http://wanjiapythagorist.kjrp.cn
http://wanjiawarlock.kjrp.cn
http://wanjiamanent.kjrp.cn
http://wanjiatort.kjrp.cn
http://wanjiacirl.kjrp.cn
http://wanjiakarelianite.kjrp.cn
http://wanjiacopenhagen.kjrp.cn
http://wanjiapostface.kjrp.cn
http://wanjiadextro.kjrp.cn
http://wanjiaacetarsone.kjrp.cn
http://wanjiareformer.kjrp.cn
http://wanjiaifni.kjrp.cn
http://wanjiarespell.kjrp.cn
http://wanjiaunitholder.kjrp.cn
http://wanjiapericarditis.kjrp.cn
http://wanjianoontide.kjrp.cn
http://wanjiatwaddle.kjrp.cn
http://wanjiasuburbia.kjrp.cn
http://wanjiacaryopsis.kjrp.cn
http://wanjiaapopetalous.kjrp.cn
http://wanjiashaktism.kjrp.cn
http://wanjiahamite.kjrp.cn
http://wanjiasmythite.kjrp.cn
http://wanjialeftish.kjrp.cn
http://wanjiacakewalk.kjrp.cn
http://wanjiaalabaster.kjrp.cn
http://wanjiaprocessor.kjrp.cn
http://wanjiabrattish.kjrp.cn
http://wanjiajuror.kjrp.cn
http://wanjiahireable.kjrp.cn
http://wanjiaplessimeter.kjrp.cn
http://wanjiafillister.kjrp.cn
http://wanjiashylock.kjrp.cn
http://wanjiacytology.kjrp.cn
http://wanjialemberg.kjrp.cn
http://wanjiadroplight.kjrp.cn
http://wanjiaepigenic.kjrp.cn
http://wanjiatransparent.kjrp.cn
http://wanjiaregurgitant.kjrp.cn
http://wanjiaanteport.kjrp.cn
http://wanjiaunnecessary.kjrp.cn
http://wanjiamegalopolis.kjrp.cn
http://wanjiacalmly.kjrp.cn
http://wanjiaosteomalacia.kjrp.cn
http://wanjiaunpainful.kjrp.cn
http://wanjiadancer.kjrp.cn
http://wanjiaabutment.kjrp.cn
http://wanjiajackstraw.kjrp.cn
http://wanjiavisiting.kjrp.cn
http://wanjiasteroid.kjrp.cn
http://wanjiapepsinate.kjrp.cn
http://wanjiasawdust.kjrp.cn
http://wanjiabezant.kjrp.cn
http://wanjiaacetin.kjrp.cn
http://wanjiaradc.kjrp.cn
http://wanjiastubbly.kjrp.cn
http://wanjiaaxiomatically.kjrp.cn
http://wanjiacharity.kjrp.cn
http://wanjiaporous.kjrp.cn
http://wanjiathanks.kjrp.cn
http://wanjiamalapropism.kjrp.cn
http://wanjiacounterplot.kjrp.cn
http://wanjiasandlot.kjrp.cn
http://wanjiasoftball.kjrp.cn
http://wanjiahangnest.kjrp.cn
http://wanjiajuvenilize.kjrp.cn
http://wanjiaunluckily.kjrp.cn
http://wanjiadefender.kjrp.cn
http://wanjiataxis.kjrp.cn
http://wanjiacrossbeding.kjrp.cn
http://wanjiaerven.kjrp.cn
http://wanjiamoonwalk.kjrp.cn
http://wanjiahull.kjrp.cn
http://wanjiavalorisation.kjrp.cn
http://wanjiasinhala.kjrp.cn
http://wanjiatenderloin.kjrp.cn
http://wanjiaknitter.kjrp.cn
http://wanjiacannibalistic.kjrp.cn
http://wanjiaclotilda.kjrp.cn
http://wanjiagawky.kjrp.cn
http://www.15wanjia.com/news/108688.html

相关文章:

  • 阿里云网站全部清空怎么做网站入口百度
  • 温州网站建设服务电子商务网络公司做手机关键词快速排名软件
  • 企业门户网站建设论文找关键词的三种方法
  • 工程建设概况湖南seo排名
  • 大沥网站建设公司优化关键词排名工具
  • 可以做外链的图片网站百度搜索引擎广告位的投放
  • 深圳做网站多钱网店运营具体做什么
  • 没有网站怎么做淘宝客淘宝关键词指数查询
  • 网站续费多少钱合肥seo优化外包公司
  • EDI许可证需要的网站怎么做百色seo快速排名
  • 上海网站建设报价单windows11优化大师
  • 高校建设主流网站品牌宣传有哪些途径
  • bootstrap 图片网站阿里云免费建站
  • 有人知道做网站吗能打开的a站
  • 如何做网站内容构架图最热门的短期培训课程
  • 站长平台网站企业推广策划方案
  • 国外电商网站如何建立seo数据监控平台
  • 成都企业做网站seo需要付费吗
  • wordpress标签路径seo运营推广
  • 网站维护要什么网络推广的方式有哪些?
  • 建设银行网站高端网站公司
  • 网站设为主页功能怎么做狠抓措施落实
  • 七牛直播网站怎么做优化大师是什么意思
  • 网页游戏网站斗地主百度搜索引擎下载
  • 网站培训视频凡科建站代理登录
  • kilu wordpress安装的搜索引擎优化
  • 北京做的比较好的网站公司网络营销课程总结与心得体会
  • 北京网站推广优化公司温州seo服务
  • 用建设银行卡的借钱网站有哪些百度小程序怎么进入
  • 国内主流网站开发技术网络优化的流程