using Excel;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.IO;
using UnityEditor;
using UnityEngine;
[Serializable]
public class CityExcelData
{
public CityItem[] cityItems;
}
[Serializable]
public class CityItem
{
///
/// 区划编号
///
public string divisionNumber;
///
/// 区划名称
///
public string districtName;
///
/// 省级区划编号
///
public string provincialDivisionNumber;
///
/// 省级名称
///
public string provinceName;
///
/// 市级区划编号
///
public string cityLevelZoningNumber;
///
/// 市级名称
///
public string cityLevelName;
///
/// 区级区划编号
///
public string districtLevelDivisionNumber;
///
/// 区级名称
///
public string districtLevelName;
///
/// 层级
///
public string level;
}
public class ExcelConfig
{
///
/// 存放excel表文件夹的的路径,本例xecel表放在了"Assets/Excels/"当中
///
public static readonly string excelsFolderPath = Application.dataPath + "/Excels/";
///
/// 存放Excel转化CS文件的文件夹路径
///
public static readonly string assetPath = "Assets/Resources/";
}
public class ExcelTool
{
///
/// 读取表数据,生成对应的数组
///
/// excel文件全路径
/// Item数组
public static CityItem[] CreateItemArrayWithExcel(string filePath)
{
//获得表数据
int columnNum = 0, rowNum = 0;
DataRowCollection collect = ReadExcel(filePath, ref columnNum, ref rowNum);
//根据excel的定义,第二行开始才是数据
CityItem[] array = new CityItem[rowNum - 1];
for (int i = 1; i < rowNum; i++)
{
CityItem item = new CityItem();
//解析每列的数据
item.divisionNumber = collect[i][0].ToString();
item.districtName = collect[i][1].ToString();
item.provincialDivisionNumber = collect[i][2].ToString();
item.provinceName = collect[i][3].ToString();
item.cityLevelZoningNumber = collect[i][4].ToString();
item.cityLevelName = collect[i][5].ToString();
item.districtLevelDivisionNumber = collect[i][6].ToString();
item.districtLevelName = collect[i][7].ToString();
item.level = collect[i][8].ToString();
array[i - 1] = item;
}
return array;
}
///
/// 读取excel文件内容
///
/// 文件路径
/// 行数
/// 列数
///
static DataRowCollection ReadExcel(string filePath, ref int columnNum, ref int rowNum)
{
FileStream stream = File.Open(filePath, FileMode.Open, FileAccess.Read, FileShare.Read);
IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream);
DataSet result = excelReader.AsDataSet();
//Tables[0] 下标0表示excel文件中第一张表的数据
columnNum = result.Tables[0].Columns.Count;
rowNum = result.Tables[0].Rows.Count;
return result.Tables[0].Rows;
}
}