• Unity读取Excel表格


    一、将读取Excel文件放到Plugins文件下,并添加组件

    二、相关代码

    using System;
    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    using System.Data;
    using System.IO;
    using Excel;
    using UnityEngine.UI;
    using Object = UnityEngine.Object;
    
    public class finsh : MonoBehaviour
    {
         //public设置为unity界面配置
        public RectTransform content;
        public GameObject table;
        public GameObject tableDemo;
        private string file1 = "Assets/finsh/cc.xlsx";//读取的文件的路径
    
      
          //根据读取Excel表格的数量通过克隆创建对应的表格
        public void CloneForm()
        {
            Dictionary<string, string> dictionary = LoadInfo(file1);
            foreach (var i in dictionary)
            {
                content = table.GetComponent<RectTransform>();
                var task = Instantiate(tableDemo, content);
                task.gameObject.SetActive(true);
                task.GetComponent<InputField>().text = i.Value;
            }
        }
        
         //读取加载
        public void read()
        {
            GameObject.Find("table").AddComponent<finsh>().LoadInfo(file1);
            print(file1);
            CloneForm();
        }
    
        //找到并读取Excel,转换成DataSet型变量
        DataSet ReadExcel(string path)
        {
            Debug.Log(path + "read");
            FileStream fs = File.Open(path, FileMode.Open, FileAccess.Read, FileShare.Read);
            IExcelDataReader iExcelDR = ExcelReaderFactory.CreateOpenXmlReader(fs);
            DataSet ds = iExcelDR.AsDataSet();
            fs.Close();
            return ds;
        }
    
        //加载记录表中信息
        public Dictionary<string, string> LoadInfo(string path)
        {
            Debug.Log(path+"load");
            Dictionary<string, string> table_list=new Dictionary<string, string>();
           DataSet ds = ReadExcel(path);
            int num= ds.Tables.Count;  //查询文件有几个表
            print(""+num);
            int columns = ds.Tables[1].Columns.Count; //总列数,Tables[0]为待查询的表1
            int rows = ds.Tables[1].Rows.Count; //总行数
            GetComponent<GridLayoutGroup>().constraintCount = columns;
            print(rows + "---" + columns);
            for (int j = 0; j < rows; j++)
            {
                for (int i = 0; i < columns; i++)
                {
                    //读取表1的第i行第j列
                    string value = ds.Tables[1].Rows[j][i].ToString(); //ds.Tables[0].Rows[i][0]是Object,需强行转换为string
                    string key = (j + 1) + "" + (i + 1) + "";
                    table_list.Add(key,value);
                   // Debug.Log(key + "===" + value);
    
                }
    
               
            }
    
            return table_list;
        }
        
    }
    
    /*创建对象
     private Object CreateSprite(int r, int c)
    {
        GameObject go=new GameObject(r.ToString()+c.ToString());
        go.AddComponent<InputField>();
        go.transform.SetParent(this.transform,false);
        return go;
        print(this.transform.name);
    }*/
  • 相关阅读:
    SVN操作指南
    .NET Tools
    SQL条件查询控件
    txt文件导入Sql Server数据库表方法
    黑盒测试用例设计方法
    JS库
    在 C# 中 ("x" == "X") 何时成立?
    奶牛问题,别人写的,自己试了一下.
    Some Cool Tips For .NET
    Excel Data Reader Read Excel files in .NET
  • 原文地址:https://www.cnblogs.com/LiuQizhong/p/12157190.html
Copyright © 2020-2023  润新知