获取EPPlus

下载EPPlus


将得到的EPPlus.dll移动到Plugins文件夹下


读取Excel数据

// Assets/Example_01/Editor/HandleExcel.csusing System;
using System.Collections.Generic;
using System.IO;
using Example_01.Scripts;
using OfficeOpenXml;
using UnityEditor;
using UnityEngine;public class HandleExcel
{/// <summary>/// 读取Excel/// </summary>[MenuItem("Assets/Excel/Read File", false, 0)]public static void ReadExcel(){string[] ids = Selection.assetGUIDs;foreach (var id in ids){string path = $"{Environment.CurrentDirectory}/{AssetDatabase.GUIDToAssetPath(id)}";Debug.Log(path);using FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);ExcelPackage.LicenseContext = LicenseContext.NonCommercial;using ExcelPackage excel = new ExcelPackage(fs);// 获取Sheet集合ExcelWorksheets worksheets = excel.Workbook.Worksheets;foreach (var worksheet in worksheets){// 获取当前工作表名称Debug.Log(worksheet.Name);int colCount = worksheet.Dimension.End.Column;int rowCount = worksheet.Dimension.End.Row;for (int row = 1; row <= rowCount; row++){for (int col = 1; col <= colCount; col++){string text = worksheet.Cells[row, col].Text;Debug.Log($"({row}, {col}) ---> {text}");}}}}}
}

创建并向Excel中写入数据

// Assets/Example_01/Editor/HandleExcel.csusing System;
using System.Collections.Generic;
using System.IO;
using Example_01.Scripts;
using OfficeOpenXml;
using UnityEditor;
using UnityEngine;public class HandleExcel
{/// <summary>/// 创建与写入Excel/// </summary>[MenuItem("Assets/Excel/Create & Write File", false, 1)]public static void CreateWriteExcel(){string path = $"{Application.dataPath}/Example_01/Excels/{DateTime.Now:yyyy-MM-dd hhmmss}.xlsx";Debug.Log(path);FileInfo file = new FileInfo(path);ExcelPackage.LicenseContext = LicenseContext.NonCommercial;using ExcelPackage excel = new ExcelPackage(file);// 向excel中写入数据ExcelWorksheet worksheet = excel.Workbook.Worksheets.Add("Sheet 1");worksheet.Cells[1, 1].Value = "Lee";worksheet = excel.Workbook.Worksheets.Add("Sheet 2");worksheet.Cells[1, 1].Value = "Prosper";// 保存excel.Save();AssetDatabase.Refresh();}
}

读取Excel数据并生成Asset静态资源文件

// Assets/Example_01/Editor/HandleExcel.csusing System;
using System.Collections.Generic;
using System.IO;
using Example_01.Scripts;
using OfficeOpenXml;
using UnityEditor;
using UnityEngine;public class HandleExcel
{/// <summary>/// 读取Excel数据并生成Asset静态资源文件/// </summary>[MenuItem("Assets/Excel/Create Asset File", false, 2)]public static void CreateExcelData(){ExcelData script = ScriptableObject.CreateInstance<ExcelData>();string[] ids = Selection.assetGUIDs;foreach (var id in ids){string path = $"{Environment.CurrentDirectory}/{AssetDatabase.GUIDToAssetPath(id)}";using FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);ExcelPackage.LicenseContext = LicenseContext.NonCommercial;using ExcelPackage excel = new ExcelPackage(fs);// 获取Sheet集合ExcelWorksheets worksheets = excel.Workbook.Worksheets;foreach (var worksheet in worksheets){List<ExcelDataInfo> list = new List<ExcelDataInfo>();int colCount = worksheet.Dimension.End.Column;int rowCount = worksheet.Dimension.End.Row;for (int row = 1; row <= rowCount; row++){for (int col = 1; col <= colCount; col++){string text = worksheet.Cells[row, col].Text;list.Add(new ExcelDataInfo{row = row,col = col,text = text});}}script.sheets.Add(new ExcelDataSheet{name = worksheet.Name,list = list});}}// 对象转换成jsonstring json = JsonUtility.ToJson(script.sheets);Debug.Log(json);// json转换成对象List<ExcelDataInfo> data = JsonUtility.FromJson<List<ExcelDataInfo>>(json);Debug.Log(data);// 将资源保存到本地string savePath =$"Assets/Example_01/Resources/ExcelAssetData {DateTime.Now:yyyy-MM-dd hhmmss}.asset";AssetDatabase.CreateAsset(script, savePath);AssetDatabase.SaveAssets();AssetDatabase.Refresh();}
}
// Assets/Example_01/Scripts/ExcelData.csusing System.Collections.Generic;
using UnityEngine;namespace Example_01.Scripts
{public class ExcelData : ScriptableObject{public List<ExcelDataSheet> sheets = new List<ExcelDataSheet>();}[System.Serializable]public class ExcelDataSheet{[Tooltip("Sheet页名称")] public string name;[Tooltip("Sheet页具体内容")] public List<ExcelDataInfo> list;}[System.Serializable]public class ExcelDataInfo{[Tooltip("行")] public int row;[Tooltip("列")] public int col;[Tooltip("内容")] public string text;}
}

JSON解析

Unity中JSON不支持字典类型,通过继承ISerializationCallbackReceiver接口实现字典序列化

// Assets/Example_01/Editor/HandleExcel.csusing System;
using System.Collections.Generic;
using System.IO;
using Example_01.Scripts;
using OfficeOpenXml;
using UnityEditor;
using UnityEngine;public class HandleExcel
{/// <summary>/// Unity中JSON不支持字典类型,通过继承ISerializationCallbackReceiver接口实现字典序列化/// </summary>[MenuItem("Assets/Excel/Load Dictionary Data", false, 3)]public static void LoadDictionaryData(){Data<string, string> data = new Data<string, string>{["firstName"] = "Prosper",["lastName"] = "Lee"};string json = JsonUtility.ToJson(data);Debug.Log(json); // {"keys":["firstName","lastName"],"values":["Prosper","Lee"]}data = JsonUtility.FromJson<Data<string, string>>(json);Debug.Log($"{data["firstName"]}{data["lastName"]}"); // ProsperLee}private class Data<TK, TV> : ISerializationCallbackReceiver{public List<TK> keys;public List<TV> values;private Dictionary<TK, TV> _data = new Dictionary<TK, TV>();public TV this[TK key]{get => !_data.ContainsKey(key) ? default : _data[key];set => _data[key] = value;}public void OnBeforeSerialize(){keys = new List<TK>();values = new List<TV>();foreach (KeyValuePair<TK, TV> item in _data){keys.Add(item.Key);values.Add(item.Value);}}public void OnAfterDeserialize(){_data = new Dictionary<TK, TV>();for (int i = 0; i < keys.Count; i++){_data[keys[i]] = values[i];}keys = null;values = null;}}
}

Unity(四十二):EPPlus读写Excel数据、JSON解析相关推荐

  1. OpenCV学习笔记(四十一)——再看基础数据结构core OpenCV学习笔记(四十二)——Mat数据操作之普通青年、文艺青年、暴力青年 OpenCV学习笔记(四十三)——存取像素值操作汇总co

    OpenCV学习笔记(四十一)--再看基础数据结构core 记得我在OpenCV学习笔记(四)--新版本的数据结构core里面讲过新版本的数据结构了,可是我再看这部分的时候,我发现我当时实在是看得太马 ...

  2. 大数据的过去、现在和未来:万字长文解读《大数据四十二条》

    这是傅一平的第314篇原创 "与数据同行"开通了微信群,现已汇聚了3500位小伙伴了,长按以下二维码发送"入群"后加入. 正文开始 它山之石可以攻玉,何宝宏博士 ...

  3. 【正点原子STM32连载】第四十二章 FLASH模拟EEPROM实验 摘自【正点原子】MiniPro STM32H750 开发指南_V1.1

    1)实验平台:正点原子MiniPro H750开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id=677017430560 3)全套实验源码+手册+视频 ...

  4. 四十二、深入Java中的文件读取操作

    @Author:Runsen @Date:2020/6/8 作者介绍:Runsen目前大三下学期,专业化学工程与工艺,大学沉迷日语,Python, Java和一系列数据分析软件.导致翘课严重,专业排名 ...

  5. 计算机基础函数运用,计算机应用基础第十二讲:EXCEL中函数的实际运用.doc

    文档介绍: 计算机应用基础第十二讲:EXCEL中函数的实际运用.doc计算机应用基础第十二讲:EXCEL中函数的实际运用课 题EXCEL屮函数的实际运用课型多媒体课授课时间第20周教学目的实例分析,掌 ...

  6. 【Visual C++】游戏开发笔记四十二 浅墨DirectX教程之十 游戏输入控制利器 DirectInput专场

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 本系列文 ...

  7. 【Microsoft Azure 的1024种玩法】四十二. 通过Windows Admin Center快速创建Azure Virtual Machines

    [简介] Windows Admin Center是微软开发的一套可以部署在本地基于浏览器的GUI的工具集平台,其平台可用于管理Windows相关服务器和PC机器,我们可以利用Windows Admi ...

  8. R语言心得说:R语言之xlsx包读写Excel数据

    R语言心得说:R语言之xlsx包读写Excel数据 感谢Adrian A. Drǎgulescu发布的xlsx包 工具准备 [基础]简单读取excel文件数据 [基础]简单写入数据到excel文件 [ ...

  9. 【Visual C++】游戏开发笔记四十二 浅墨DirectX教程之十 游戏输入控制利器:DirectInput专场...

    本系列文章由zhmxy555(毛星云)编写,转载请注明出处. 文章链接:http://blog.csdn.net/zhmxy555/article/details/8547531 作者:毛星云(浅墨) ...

最新文章

  1. python教学在线观看-python在线学习
  2. 【新星计划】 Python的txt文本操作-读、写
  3. 二叉树先序,中序,后序,层次遍历(数据结构)
  4. 运行中SQL Server查询存储
  5. css 引入的 方式有哪些? link与post有什么区别??
  6. 节 海里/小时 千米/小时 米/秒 转换
  7. 创建对象 --- 构造函数模式
  8. A2DP和AVRCP蓝牙音频传输协议
  9. asp.net post任何数据类型流到网站--当当网API传XML文件
  10. YOLOV3算法详解
  11. 三险一金包括什么?三险和五险有什么区别?
  12. java ftp上传失败_java ftp上传失败怎么办
  13. spring boot+thymeleaf+bootstrap 简单实现后台管理系统界面
  14. dedecms调用友情链接代码
  15. pytorch分布式训练 DistributedSampler、DistributedDataParallel
  16. 设计师和程序员必备:全世界最著名的 icon 网站都在这了
  17. c语言中abs与labs的区别,C / C ++中的abs(),labs(),llabs()函数
  18. native crash
  19. C1DataGrid for Silverlight 修改 CheckBox 列外观
  20. 二十三、1-Bit数据的存储(延迟线/磁芯/DRAM/SRAM/磁带/磁盘/光盘/Flash SSD)

热门文章

  1. php限制数组长度,PHP限制数组中每个字符串的长度
  2. Watchdog 杀掉系统进程重启问题分析
  3. mysql异步写入数据库_scrapy爬虫框架中数据库(mysql)的异步写入
  4. django笔记第三节
  5. 2022年红人营销:5个快速找到YouTube垂类网红的方法
  6. Solidity智能合约开发(提高篇)
  7. 电脑网站(手机网站)支付宝支付的配置信息(appid、商户私钥、支付宝公钥)
  8. 实景三维数字地图:数字技术赋能地图领域的新时代
  9. SAP Web Service简介与配置方法
  10. 两条不重复的最大路径