Excel介绍

1.Excel的本质:Excel表本质上也是一堆数据,只不过它有自己的存储读取规则,如果我们想要通过代码读取它,那么必须知道它的存储规则,官网是专门提供了对应的DLL文件用来解析Excel文件的;

2.获取Excel数据信息的意义:

  • 可以根据表中数据来动态的生成相关数据,如数据结构类、容器类、二进制数据类;
  • 转成二进制数据也可以提升读取效率,提升数据安全性;

Excel官方工具使用

//主要知识点:
//1.FileStream读取文件流
//2.IExcelDataReader类,从流中读取Excel数据
//3.DataSet 数据集合类 将Excel数据转存进其中方便读取
//4.DataTable 数据表类 表示Excel文件中的一个表
//5.DataRow 数据行类 表示某张表中的一行数据
[MenuItem("GameTool/读取Excel里的具体信息")]
private static void ReadExcel()
{
    using (FileStream fs = File.Open(Application.dataPath + "/ArtRes/Excel/PlayerInfo.xlsx", FileMode.Open, FileAccess.Read))
    {
        IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(fs);
        DataSet result = excelReader.AsDataSet();

        for (int i = 0; i < result.Tables.Count; i++)
        {
            //得到其中一张表的具体数据
            DataTable table = result.Tables[i];
            Debug.Log("表名:" + result.Tables[i].TableName);
            Debug.Log("行数:" + result.Tables[i].Rows.Count);
            Debug.Log("列数:" + result.Tables[i].Columns.Count);
            //得到其中一行的数据
            DataRow row = table.Rows[0];
            //得到行中某一列的信息
            Debug.Log(row[1].ToString());
            DataRow row;
            for (int j = 0; j < table.Rows.Count; j++)
            {
                //得到每一行的信息
                row = table.Rows[j];
                Debug.Log("*********新的一行************");
                for (int k = 0; k < table.Columns.Count; k++)
                {
                    //得到每一列的信息
                    Debug.Log(row[k].ToString());
                }
            }
        }

        fs.Close();
    }
}

制定规则

1.Excel读取规则:

  • 数据类型生成要知道字段名,容器(一般字典)要知道主键,二进制要知道从哪行哪列开始;
  • 第一行是字段名,第二行是数据类型,第三行容器可以再加一个key表示主键(也可以默认第一列),第四行是中文解释(给策划写的,不会生成进去);
  • 下方的表名作为生成的类型名;

Excel工具编写