精华内容
下载资源
问答
  • Unity读写Excel表格源码
  • 该插件是基于NOPI在Unity平台上进行Excel操作,NPOI可以在没有安装Office的情况下对Word或Excel文档进行读写操作,该插件已包含Dll文件并且已经封装,可以直接修改方法来实现对Excel的不同操作
  • Unity读取Excel文件

    2019-05-07 19:35:59
    Unity调用Excel所使用的dll文件,库文件 Excel.dll 和ICSharpCode.SharpZipLib.dll库文件
  • unityExcel插件

    2020-08-20 18:36:14
    参考大佬的文章自己修改了一下写的excel自动化工具 根据Excel自动生成对应的c#脚本和asset配置文件
  • unity读取Excel

    2018-08-16 10:10:54
    unity中通过EPPlus库读写Excel表格,直接导入unity即可使用
  • UnityExcel插件

    2018-09-27 11:44:55
    用于unity中读取Excel表和写入Excel表 使用以下引用 using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using OfficeOpenXml; using System.IO;
  • Unity3D读取Excel工具

    2018-01-17 18:03:41
    Unity中读取Excel配置文件的工具,下载并解压,一个有3个文件,导入到你的Unity项目目录中使用。
  • Unity3d动态创建excel并写入数据
  • unity 自动excel转json插件
  • 附带Demo ,附带完整的.dll文件,完全解决了发布后无法读取Excel的Bug
  • Unity读写Excel所需要的dll文件,已经打包成了.unitypackage,直接丢到unity中配合脚本即可读写excel
  • unity打开excel表格_unity 读取、更改excel(.xlsx类型)数据-附件资源
  • 主要为大家详细介绍了Unity读取Excel文件转换XML格式文件,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • unity中动态来生成表格文件并写入数据到表格中,unity中动态来生成表格文件并写入数据到表格中
  • 工具是在UNITY编程环境下使用的,若个人需要可视情况改写,与EXCEL的交互是使用EPPlus插件,插件附带在资源里面,可满足大部分的转换需求
  • Unity导出Excel

    2021-04-20 22:13:31
    Unity导出Excel
  • unity3d读写excel文件时所需的dll文件,可用在unity3d3.5版本上
  • 读取excel文档内容的方法,不过xls和xlsx后缀不同,里边内容有些许不同 /// <summary> /// 只读Excel方法 /// </summary> /// <param name="ExcelPath"></param> /// <returns&...

    读取excel文档内容的方法,不过xls 和xlsx后缀不同,里边内容有些许不同。

    此方法需要用到Excel.dll

    免费链接:

    里边有三个dll文件都需要

     /// <summary>
        /// 只读Excel方法 
        /// </summary>
        /// <param name="ExcelPath"></param>
        /// <returns></returns>
        public static void GameReadExcel(string ExcelPath)
        {
            FileStream stream = File.Open( ExcelPath, FileMode.Open, FileAccess.Read);
            //IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream);//xlsx
            IExcelDataReader excelReader = ExcelReaderFactory.CreateBinaryReader(stream);//xls
    
            DataSet result = excelReader.AsDataSet();
    
            int columns = result.Tables[0].Columns.Count;//获取列数
            int rows = result.Tables[0].Rows.Count;//获取行数
    
    
            //从第二行开始读
            for (int i = 1; i < rows; i++)
            {
                for (int j = 0; j < columns; j++)
                {
                    string nvalue = result.Tables[0].Rows[i][j].ToString();
                    Debug.Log(nvalue);
                }
            }
    
        }

    展开全文
  • unityExcel读写

    2021-01-18 13:01:35
    自己查找总结的一个,轻量级、易上手的插件,一个二维数组解决所有问题,基于EPPlus的优化
  • UnityExcel进行读写操作需要的DLL文件,包含各种版本的EPPlus.Dll,和Excel.DLL。里面自己试验过可以用的已经标注
  • Unity生成Excel

    千次阅读 2017-08-20 16:15:18
    最近有这样的一个需求:服务器方要使用Unity里面的配置数据,然后通过excel表呈现。 那么里面有一个重要的问题,就是怎样通过C#来生成Excel 本来我想通过自己实现,结果发现有些麻烦,就放弃了。然后我找到一个...

    最近有这样的一个需求:服务器方要使用Unity里面的配置数据,然后通过excel表呈现。
    那么里面有一个重要的问题,就是怎样通过C#来生成Excel
    本来我想通过自己实现,结果发现有些麻烦,就放弃了。然后我找到一个插件,可以生成Excel,是支持.net2.0的。以下是下载链接:
    http://download.csdn.net/download/liulei199079/9942183
    下面说明其中的使用方法,看下面的代码;

    定义unity标题命令,并添加方法
    [MenuItem("LazerSelect/Excel/Output")]
        private static void CreateExcel()
        {
            NPOI.HSSF.UserModel.HSSFWorkbook book = new NPOI.HSSF.UserModel.HSSFWorkbook();
            NPOI.SS.UserModel.ISheet sheet = book.CreateSheet("test_01");
    
            // 第一列
            NPOI.SS.UserModel.IRow row = sheet.CreateRow(0);
            row.CreateCell(0).SetCellValue("第一列第一行");
    
            // 第二列
            NPOI.SS.UserModel.IRow row2 = sheet.CreateRow(1);
            row2.CreateCell(0).SetCellValue("第二列第一行");
    
            // ...
    
            // 写入到客户端  
            using (System.IO.MemoryStream ms = new System.IO.MemoryStream())
            {
                book.Write(ms);
                File.WriteAllBytes(Application.dataPath + "/" + "aa.xls", ms.ToArray());
            }
        }

    最后,希望对做相关的功能的小伙伴们有所帮助。

    展开全文
  • Unity Excel插件 EPPlus ,以及附带调用代码。插件包含 .Net 3.5 和 .Net 4.x 两个版本;C#部分代码包含对Excel 2007以上(.xlsx)的读写等功能。 使用参考:...
  • 在做游戏时,经常会遇到需要读取Excel表格,用来配置游戏数据,供策化调试程序用。这里Down了三种方法,都采用第三方库,不需要安装Office,关键free (When playing games, we often encounter the need to read ...
  • Excel.dll,ICSharpCode.SharpZipLib.dll,System.Data.dll是Unity读取Excel数据所必须的库文件。下载后解压到Asset下的Plugin是文件夹中
  • Unity Excel导入导出工具项目案例.unitypackageUnity Excel导入导出工具项目案例.unitypackageUnity Excel导入导出工具项目案例.unitypackage
  • 插件连接插件地址 导入插件后如果报system.data冲突的错误 只需要把导入的插件下的plugins的system.data这个程序集删除 我这里已经删除过了 找了很好用的excel读写dll 基于EPPlus.dll ... using System.Collections;...

    插件连接插件地址

    导入插件后如果报system.data冲突的错误 只需要把导入的插件下的plugins的system.data这个程序集删除
    我这里已经删除过了
    我这里已经删除过了
    找了很好用的excel读写dll 基于EPPlus.dll
    https://www.yuque.com/docs/share/da66bf97-fdad-4db9-820c-8dfd82163c54?# 《Excel读写插件 EPPlus.Dll》

    新建场景

    自己创建个button 点击button出现选择保存目录的提示框

    using UnityEngine;
    using System.Collections;
    using System.Collections.Generic;
    using NPOI.HSSF.UserModel;
    using NPOI.SS.UserModel;
    using NPOI.HSSF.Util;
    
    using System.IO;
    using Excel;
    using System.Data;
    using ArabicSupport;
    using Common;
    using UnityEngine.UI;
    using System;
    
    public class ReadOrWrieExcel : MonoBehaviour
    {
        public string MySheetName = "mytest1";//Excel工作表的名字
        public string MyExcelName = "MyTest";//Excel的名字
    
        public List<string> MyCellArray;//第一列数据
        public List<string> MyCellArray02;//第二列数据
        public List<string> MyCellArray03;//第san列数据
    
        public List<string> MyString;//用于ExcelDataReader数据读取
    
        //private bool ReadEcelxEnable_NPOI = false;//启用禁用NPOI组件
        //private bool ReadEcelxEnable_ExcelDataReader = false;//启用禁用ExcelDataReader组件
    
        FileStream myaddress;
        public Button but;
        private void OnEnable()
        {
            //通过点击按钮 实现选择文件路径 然后保存excel文件
            but.onClick.AddListener(() =>
            {
                SaveProject(MyCellArray, MyCellArray02, MyCellArray03);
            });
        }
    
    
    
        public void Start()
        {
        //**如果不使用保存目录提示框 可以借鉴这里**
            //StartCoroutine(Test());
        }
    
        //测试读写
        IEnumerator Test()
        {
    
            ExcelDataWrite(Application.dataPath + "/StreamingAssets/" + MyExcelName + ".xls", MyCellArray, MyCellArray02, MyCellArray03);
            yield return new WaitForSeconds(1f);
    
            // ExcelDataRead(Application.dataPath + "/StreamingAssets/" + MyExcelName + ".xls");
        }
    
        /// <summary>
        ///  //通过选择存储目录的方式 保存excel文件
        /// </summary>
        /// <param name="str">存放的每一列数据  可以是多个 第一个list最好为最大行数</param>
        public void SaveProject(params List<string>[] str)
        {
            SaveFileDlg pth = new SaveFileDlg();
            pth.structSize = System.Runtime.InteropServices.Marshal.SizeOf(pth);
            pth.filter = "xls (*.xls)";
            pth.file = new string(new char[256]);
            pth.maxFile = pth.file.Length;
            pth.fileTitle = new string(new char[64]);
            pth.maxFileTitle = pth.fileTitle.Length;
            pth.initialDir = Application.dataPath;  // default path  
            pth.title = "保存项目";
            pth.defExt = "xls";
            pth.flags = 0x00080000 | 0x00001000 | 0x00000800 | 0x00000200 | 0x00000008;
            if (SaveFileDialog.GetSaveFileName(pth))
            {
                string filepath = pth.file;//选择的文件路径; 
    
    
                //通过获取到的路径 保存excel文件
    
    
                ExcelDataWrite(filepath, str);
                Debug.Log(filepath);
            }
        }
        /// <summary>
        /// excel写入数据
        /// </summary>
        /// <param name="filePath">w文件路径</param>
        /// <param name="ss">存放每一列数据的数组  可以是多个 第一个list最好为最大行数</param>
        public void ExcelDataWrite(string filePath, params List<string>[] ss)
        {
            #region
            //if (Directory.Exists(Application.dataPath+ "/StreamingAssets/" + MyExcelName + ".xls")==false)
            //{
            //     myaddress = new FileStream(Application.dataPath + "/StreamingAssets/" + MyExcelName + ".xls", FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite);
            //}
            //else
            //{
            //     myaddress = new FileStream(Application.dataPath + "/StreamingAssets/" + MyExcelName + ".xls", FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite);
            //}
            #endregion
            //myaddress = new FileStream(Application.dataPath + "/StreamingAssets/" + MyExcelName + ".xls", FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite);
            myaddress = new FileStream(filePath, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite);
            HSSFWorkbook MyWorkbook = new HSSFWorkbook();//创建一个空的Excel文件
            HSSFSheet sheet01 = (HSSFSheet)MyWorkbook.CreateSheet(MySheetName);//添加第一个工作表
    
           //存储多列数据  数据长度可以不一样(看自己需求更改)
            for (int i = 0; i < ss[0].Count; i++)
            {
                HSSFRow Row = (HSSFRow)sheet01.CreateRow((short)i);//为工作表定义行       
                for (int a = 0; a < ss.Length; a++)
                {
                    HSSFCell cell = (HSSFCell)Row.CreateCell((short)a);
    
                    if (ss[a].Count > i)
                    {
                        cell.SetCellValue(ss[a][i].ToString());//给第i列添加数值
                    }
                    else
                    {
                        cell.SetCellValue("");
                    }
                }
    
            }
    
                //根据自己需求 改
                //for (int i = 0; i < hangNum.Length; i++)
                //{
                //    HSSFRow Row = (HSSFRow)sheet01.CreateRow((short)i);//为工作表定义行 
                //    HSSFCell cell = (HSSFCell)Row.CreateCell((short)0);//为第i行  定义列
                //    cell.SetCellValue(hangNum[i]);//给第i列添加数值
                //    if (i < hang.Length)
                //    {
                //        HSSFCell cell02 = (HSSFCell)Row.CreateCell((short)1);
                //        cell02.SetCellValue(hang[i]);
                //    }
                //    else
                //    {
                //        HSSFCell cell02 = (HSSFCell)Row.CreateCell((short)1);
                //        cell02.SetCellValue("");
                //    }
                //    #region[格式设置]
                //    //Row.RowStyle = MyWorkbook.CreateCellStyle();//定义行样式
                //    //Row.RowStyle.BorderBottom = BorderStyle.Double;//更改行边界
                //    //cell.CellStyle = MyWorkbook.CreateCellStyle();//定义单元格格式
                //    //cell.CellStyle.BorderRight = BorderStyle.Thin;//改变一小格边界
                //    //cell.CellStyle.BorderBottom = BorderStyle.Dashed;
                //    //cell.CellStyle.BottomBorderColor = HSSFColor.Red.Index;
    
                //    //HSSFFont MyFont = (HSSFFont)MyWorkbook.CreateFont();//定义字体
                //    改变字体、字体高度、字体颜色、eto
                //    //MyFont.FontName = "Tahoma";
                //    //MyFont.FontHeightInPoints = 14;
                //    //MyFont.Color = HSSFColor.Gold.Index;
                //    //MyFont.Boldweight = (short)FontBoldWeight.Bold;
    
                //    //设置单元格字体
                //    //cell.CellStyle.SetFont(MyFont);
                //    #endregion
                //}
    
                MyWorkbook.Write(myaddress);//在Excel中写入数据
                MyWorkbook.Close();//关闭打开的excel
            }
        
            //读取excel文件数据
            public void ExcelDataRead(string filepaths)
            {
                HSSFWorkbook MyBook;
                //查找并打开excel文件
                using (FileStream MyAddress_read = new FileStream(filepaths, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
                {
                    MyBook = new HSSFWorkbook(MyAddress_read);
                }
                //查找带有表单名称的表单
                ISheet sheet_read = MyBook.GetSheet(MySheetName);
    
                //表单最大行数据 sheet_read.LastRowNum
                for (int row = 0; row <= sheet_read.LastRowNum; row++)
                {
                    //查找表行
                    IRow row_read = sheet_read.GetRow(row);
                    //每行最大列数据 row_read.LastCellNum;
                    for (int cells = 0; cells < row_read.LastCellNum; cells++)
                    {
                        //显示读取的excel内容
                        Debug.Log(row_read.GetCell(cells).ToString());
                        //支持阿拉伯语言
                        // Debug.Log(ArabicFixer.Fix(row_read.GetCell(cells).ToString()));
    
                    }
                }
            }
        }
    
    

    保存目录提示框的实现方式 (基本设置)

    
    using UnityEngine;
    using System.Collections;
    using System.Runtime.InteropServices;
    using System;
    
    namespace Common
    {
        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]
        public class FileDlg
        {
            public int structSize = 0;
            public IntPtr dlgOwner = IntPtr.Zero;
            public IntPtr instance = IntPtr.Zero;
            public String filter = null;
            public String customFilter = null;
            public int maxCustFilter = 0;
            public int filterIndex = 0;
            public String file = null;
            public int maxFile = 0;
            public String fileTitle = null;
            public int maxFileTitle = 0;
            public String initialDir = null;
            public String title = null;
            public int flags = 0;
            public short fileOffset = 0;
            public short fileExtension = 0;
            public String defExt = null;
            public IntPtr custData = IntPtr.Zero;
            public IntPtr hook = IntPtr.Zero;
            public String templateName = null;
            public IntPtr reservedPtr = IntPtr.Zero;
            public int reservedInt = 0;
            public int flagsEx = 0;
        }
        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]
        public class OpenFileDlg : FileDlg
        {
    
        }
        public class OpenFileDialog
        {
            [DllImport("Comdlg32.dll", SetLastError = true, ThrowOnUnmappableChar = true, CharSet = CharSet.Auto)]
            public static extern bool GetOpenFileName([In, Out] OpenFileDlg ofd);
        }
        public class SaveFileDialog
        {
            [DllImport("Comdlg32.dll", SetLastError = true, ThrowOnUnmappableChar = true, CharSet = CharSet.Auto)]
            public static extern bool GetSaveFileName([In, Out] SaveFileDlg ofd);
        }
        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]
        public class SaveFileDlg : FileDlg
        {
    
        }
    }
    
    

    选择文件和选择文件地址

    using UnityEngine;
    using System.Collections;
    using System.Collections.Generic;
    using System.IO;
    using System.Text;
    using Common;
    public class FileControllor : MonoBehaviour
    {
        //文件格式根据自己需求更改  .txt   .xls之类的
        private void Start()
        {
            //OpenProject();
           // SaveProject();
        }
        //选择一个文件的地址
        public void OpenProject()
        {
            OpenFileDlg pth = new OpenFileDlg();
            pth.structSize = System.Runtime.InteropServices.Marshal.SizeOf(pth);
            pth.filter = "txt (*.txt)";
            pth.file = new string(new char[256]);
            pth.maxFile = pth.file.Length;
            pth.fileTitle = new string(new char[64]);
            pth.maxFileTitle = pth.fileTitle.Length;
            pth.initialDir = Application.dataPath;  // default path  
            pth.title = "打开项目";
            pth.defExt = "txt";
            pth.flags = 0x00080000 | 0x00001000 | 0x00000800 | 0x00000200 | 0x00000008;
            //0x00080000   是否使用新版文件选择窗口
            //0x00000200   是否可以多选文件
            if (OpenFileDialog.GetOpenFileName(pth))
            {
                string filepath = pth.file;//选择的文件路径;  
                Debug.Log(filepath);
            }
        }
        //将文件保存到一个地址
        public void SaveProject()
        {
            SaveFileDlg pth = new SaveFileDlg();
            pth.structSize = System.Runtime.InteropServices.Marshal.SizeOf(pth);
            pth.filter = "xls (*.xls)";
            pth.file = new string(new char[256]);
            pth.maxFile = pth.file.Length;
            pth.fileTitle = new string(new char[64]);
            pth.maxFileTitle = pth.fileTitle.Length;
            pth.initialDir = Application.dataPath;  // default path  
            pth.title = "保存项目";
            pth.defExt = "xls";
            pth.flags = 0x00080000 | 0x00001000 | 0x00000800 | 0x00000200 | 0x00000008;
            if (SaveFileDialog.GetSaveFileName(pth))
            {
                string filepath = pth.file;//选择的文件路径;  
                Debug.Log(filepath);
            }
        }
    
    }
    
    
    展开全文
  • unityexcel转json,csv,xml

    2018-01-06 00:25:11
    将editor目录放入unity工程assets目录下,在菜单栏可见到plugins。选中unity里面一个excel文件.xlsx文件,点击plugins的exceltools,选择转换后格式默认输出到excel同路径的文件
  • Unity读取Excel的dll文件

    2018-08-29 10:46:08
    unity读取excel时所需的.dll文件,包括EPPlus、Excel、ICSharpCode.SharpZipLib、System.Data。
  • UnityExcel文档读写创建操作,包括.xls和.xlsx格式。
  • Unity Excel 文件读取和写入

    千次阅读 2018-09-06 11:01:39
    在网上看到很多Unity 的解析Excel 的文章,其中最经典的一篇莫过于雨凇Momo的Unity3D研究院之MAC&amp;Windows跨平台解析Excel(六十五) 但是在使用的过程中还是碰到了不少的问题,在这里总结一下,希望能对...

    在网上看到很多Unity 的解析Excel 的文章,其中最经典的一篇莫过于雨凇Momo的Unity3D研究院之MAC&Windows跨平台解析Excel(六十五)

    但是在使用的过程中还是碰到了不少的问题,在这里总结一下,希望能对看到此处的朋友一个帮助。

    1.Excel的读取

    需要加入库文件 Excel.dll 和ICSharpCode.SharpZipLib库文件,官方链接 http://exceldatareader.codeplex.com/

    Excel文件

     

    需要添加的命名空间

    using Excel;

    读取方法

     
    1. using UnityEngine;

    2. using Excel;

    3. using System.Data;

    4. using System.IO;

    5. using System.Collections.Generic;

    6.  
    7. public class ExcelAccess

    8. {

    9. public static string Excel = "Book";

    10.  
    11. //查询menu表

    12. public static List<Menu> SelectMenuTable()

    13. {

    14. string excelName = Excel + ".xlsx";

    15. string sheetName = "sheet1";

    16. DataRowCollection collect = ExcelAccess.ReadExcel(excelName, sheetName);

    17.  
    18. List<Menu> menuArray = new List<Menu>();

    19. for (int i = 1; i < collect.Count; i++)

    20. {

    21. if (collect[i][1].ToString() == "") continue;

    22.  
    23. Menu menu = new Menu

    24. {

    25. m_Id = collect[i][0].ToString(),

    26. m_level = collect[i][1].ToString(),

    27. m_parentId = collect[i][2].ToString(),

    28. m_name = collect[i][3].ToString()

    29. };

    30. menuArray.Add(menu);

    31. }

    32. return menuArray;

    33. }

    34.  
    35. /// <summary>

    36. /// 读取 Excel ; 需要添加 Excel.dll; System.Data.dll;

    37. /// </summary>

    38. /// <param name="excelName">excel文件名</param>

    39. /// <param name="sheetName">sheet名称</param>

    40. /// <returns>DataRow的集合</returns>

    41. static DataRowCollection ReadExcel(string excelName,string sheetName)

    42. {

    43. string path= Application.dataPath + "/" + excelName;

    44. FileStream stream = File.Open(path, FileMode.Open, FileAccess.Read, FileShare.Read);

    45. IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream);

    46.  
    47. DataSet result = excelReader.AsDataSet();

    48. //int columns = result.Tables[0].Columns.Count;

    49. //int rows = result.Tables[0].Rows.Count;

    50.  
    51. //tables可以按照sheet名获取,也可以按照sheet索引获取

    52. //return result.Tables[0].Rows;

    53. return result.Tables[sheetName].Rows;

    54. }

    55. }

     

    这里逻辑很简单,如果有不懂得可以上Excel的文档里去看,但是这个Excel的库有一个限制,就是只能读不能写,并且只能在编辑器下用,如果打包出来加载时会报空指针异常,原因就不清楚了。

    所以建议大家,让策划把Excel写好后,在编辑器下读取后用Unity 的ScriptableObject 类保存成Asset文件,可以在运行时更方便的读取。

    ScriptableObject 使用

    下面给出我的实现方式,大家可以根据自己实体类来写这个BookHolder;

    1.编写BookHolder类

     
    1. using UnityEngine;

    2. using System.Collections.Generic;

    3.  
    4. /// <summary>

    5. /// 基于ScriptObject的BookHolder类

    6. /// </summary>

    7. public class BookHolder : ScriptableObject

    8. {

    9. public List<Menu> menus;

    10. }

     
    1. /// <summary>

    2. /// 菜单实体类

    3. /// </summary>

    4. [System.Serializable]

    5. public class Menu

    6. {

    7. public string m_Id;

    8. public string m_level;

    9. public string m_parentId;

    10. public string m_name;

    11. }

     

    2.新建编辑器脚本,制作xxx.asset文件。

     
    1. using UnityEngine;

    2. using UnityEditor;

    3.  
    4. /// <summary>

    5. /// 利用ScriptableObject创建资源文件

    6. /// </summary>

    7. public class BuildAsset : Editor {

    8.  
    9. [MenuItem("BuildAsset/Build Scriptable Asset")]

    10. public static void ExcuteBuild()

    11. {

    12. BookHolder holder = ScriptableObject.CreateInstance<BookHolder>();

    13.  
    14. //查询excel表中数据,赋值给asset文件

    15. holder.menus = ExcelAccess.SelectMenuTable();

    16.  
    17. string path= "Assets/Resources/booknames.asset";

    18.  
    19. AssetDatabase.CreateAsset(holder, path);

    20. AssetDatabase.Refresh();

    21.  
    22. Debug.Log("BuildAsset Success!");

    23. }

    24. }


    3.xxx.asset文件读取

     
    1. using UnityEngine;

    2.  
    3. /// <summary>

    4. /// 读取booknames的scriptObject文件

    5. /// 使用Resources直接读取

    6. /// </summary>

    7. public class ReadHolders : MonoBehaviour {

    8. readonly string assetName = "booknames";

    9.  
    10. void Start ()

    11. {

    12. BookHolder asset = Resources.Load<BookHolder>(assetName);

    13. foreach (Menu gd in asset.menus)

    14. {

    15. Debug.Log(gd.m_Id);

    16. Debug.Log(gd.m_level);

    17. Debug.Log(gd.m_parentId);

    18. Debug.Log(gd.m_name);

    19. }

    20. }

    21. }


    好了,Excel的读取就到这里。接下来讲一下Excel 的写入,怎么生成一个Excel文件,并把数组或字典中的数据写入Excel中呢?

    2.Excel 的写入

    此时需要一个Excel.dll的姐妹,EPPlus.dll 官方链接 https://epplus.codeplex.com/releases/view/118053

    使用方法在官方的文档中都有,这里只贴出我的实现方式。

    需要添加的命名空间

    using OfficeOpenXml;

    写入方法

     
    1. /// <summary>

    2. /// 写入 Excel ; 需要添加 OfficeOpenXml.dll;

    3. /// </summary>

    4. /// <param name="excelName">excel文件名</param>

    5. /// <param name="sheetName">sheet名称</param>

    6. public static void WriteExcel(string excelName, string sheetName)

    7. {

    8. //通过面板设置excel路径

    9. //string outputDir = EditorUtility.SaveFilePanel("Save Excel", "", "New Resource", "xlsx");

    10.  
    11. //自定义excel的路径

    12. string path = Application.dataPath + "/" + excelName;

    13. FileInfo newFile = new FileInfo(path);

    14. if (newFile.Exists)

    15. {

    16. //创建一个新的excel文件

    17. newFile.Delete();

    18. newFile = new FileInfo(path);

    19. }

    20.  
    21. //通过ExcelPackage打开文件

    22. using (ExcelPackage package = new ExcelPackage(newFile))

    23. {

    24. //在excel空文件添加新sheet

    25. ExcelWorksheet worksheet = package.Workbook.Worksheets.Add(sheetName);

    26. //添加列名

    27. worksheet.Cells[1, 1].Value = "ID";

    28. worksheet.Cells[1, 2].Value = "Product";

    29. worksheet.Cells[1, 3].Value = "Quantity";

    30. worksheet.Cells[1, 4].Value = "Price";

    31. worksheet.Cells[1, 5].Value = "Value";

    32.  
    33. //添加一行数据

    34. worksheet.Cells["A2"].Value = 12001;

    35. worksheet.Cells["B2"].Value = "Nails";

    36. worksheet.Cells["C2"].Value = 37;

    37. worksheet.Cells["D2"].Value = 3.99;

    38. //添加一行数据

    39. worksheet.Cells["A3"].Value = 12002;

    40. worksheet.Cells["B3"].Value = "Hammer";

    41. worksheet.Cells["C3"].Value = 5;

    42. worksheet.Cells["D3"].Value = 12.10;

    43. //添加一行数据

    44. worksheet.Cells["A4"].Value = 12003;

    45. worksheet.Cells["B4"].Value = "Saw";

    46. worksheet.Cells["C4"].Value = 12;

    47. worksheet.Cells["D4"].Value = 15.37;

    48.  
    49. //保存excel

    50. package.Save();

    51. }

    52. }


    把上面的数据换成你自己的数组和字典遍历就OK 了。好了,今天的课程就到这里,欢迎大神指教啊

     

    由于大家遇到问题较多,特附上工程地址

    Git地址:https://git.oschina.net/passionyu/ExcelReadWrite.git

     

    原文:https://blog.csdn.net/yupu56/article/details/50580277

    展开全文

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,363
精华内容 1,345
关键字:

excelunity