UD4SL3——Excel数据读取

本章代码关键字

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
//读取Excel相关
IExcelDataReader //Excel数据读取接口
ExcelReaderFactory.CreateOpenXmlReader() //通过流获取Excel数据,返回一个Excel数据读取接口类型对象
DataSet //数据集类型
iExcelDataReader.AsDataSet() //将Excel数据读取接口类型对象转换为数据集对象
//数据集相关
dataSet.Tables //数据集中的所有表
dataSet.Tables[i].TableName //数据集中的某个表的表名
dataSet.Tables[i].Rows //数据集中的某个表的所有行
dataSet.Tables[i].Rows[i] //数据集中的某个表的某一行
dataSet.Tables[i].Rows.Count //数据集中的某个表的行的数量
dataSet.Tables[i].Columns //数据集中的某个表的所有列
dataSet.Tables[i].Columns.Count //数据集中的某个表的列的数量
//数据表相关
dataTable.Columns //数据表的所有列
dataTable.Rows //数据表的所有行
dataTable.Columns //数据表的所有列
//数据列相关
DataRow //数据行类
dataRow[i] //数据行的某一列的数据

打开Excel表

主要知识点:

  1. FileStream​读取文件流
  2. IExcelDataReader​类,从流中读取Excel​数据
  3. DataSet​ 数据集合类 将Excel​数据转存进其中方便读取
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[MenuItem("GameTool/打开Excel表")]
private static void OpenExcel()
{
using (FileStream fileStream = File.Open(Application.dataPath + "/ArtRes/Excel/PlayerInfo.xlsx",
FileMode.Open,
FileAccess.Read))
{
//通过文件流获取Excel数据
IExcelDataReader iExcelDataReader = ExcelReaderFactory.CreateOpenXmlReader(fileStream);
//将excel表中的数据转换为DataSet数据类型,方便我们获取其中的内容
DataSet dataSet = iExcelDataReader.AsDataSet();
//得到Excel文件中的所有表信息
for (int i = 0; i < dataSet.Tables.Count; i++)
{
Debug.Log("表名:" + dataSet.Tables[i].TableName);
Debug.Log("行数:" + dataSet.Tables[i].Rows.Count);
Debug.Log("列数:" + dataSet.Tables[i].Columns.Count);
}
fileStream.Close();
}
}

获取Excel表中单元格的信息

主要知识点:

  1. FileStream​读取文件流
  2. IExcelDataReader​类,从流中读取Excel数据
  3. DataSet​ 数据集合类 将Excel数据转存进其中方便读取
  4. DataTable​ 数据表类 表示Excel文件中的一个表
  5. DataRow​ 数据行类 表示某张表中的一行数据
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
[MenuItem("GameTool/读取Excel的具体信息")]
private static void ReadExcel()
{
using (FileStream fileStream = File.Open(Application.dataPath + "/ArtRes/Excel/PlayerInfo.xlsx",
FileMode.Open,
FileAccess.Read))
{
//通过文件流获取Excel数据
IExcelDataReader iExcelDataReader = ExcelReaderFactory.CreateOpenXmlReader(fileStream);
//将excel表中的数据转换为DataSet数据类型,方便我们获取其中的内容
DataSet dataSet = iExcelDataReader.AsDataSet();
for (int i = 0; i < dataSet.Tables.Count; i++)
{
//得到其中一张表的具体数据
DataTable dataTable = dataSet.Tables[i];
//得到其中一行的数据
//DataRow row = dataTable.Rows[0];
//得到行中某一列的信息
//Debug.Log(row[1].ToString());
DataRow row;
for (int j = 0; j < dataTable.Rows.Count; j++)
{
//得到每一行的消息
row = dataTable.Rows[j];
Debug.Log("------------------新的一行------------------");
for (int k = 0; k < dataTable.Columns.Count; k++)
{
//得到每一行的每一列的数据
Debug.Log(row[k].ToString());
}
}
}
//关闭流
fileStream.Close();
}
}

获取Excel表中信息对于我们的意义

既然我们能够获取到Excel表中的所有数据
那么我们可以根据表中数据来动态的生成相关数据

  1. 数据结构类
  2. 容器类
  3. 2进制数据

为什么不直接读取Excel表而要把它转成2进制数据

  1. 提升读取效率
  2. 提升数据安全性