ShanDongVirtualPowerPlant/u3d-ShanDongVirtualPowerPlant/Assets/Adam/Scripts/Data/CityExcelData.cs

121 lines
3.4 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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
{
/// <summary>
/// 区划编号
/// </summary>
public string divisionNumber;
/// <summary>
/// 区划名称
/// </summary>
public string districtName;
/// <summary>
/// 省级区划编号
/// </summary>
public string provincialDivisionNumber;
/// <summary>
/// 省级名称
/// </summary>
public string provinceName;
/// <summary>
/// 市级区划编号
/// </summary>
public string cityLevelZoningNumber;
/// <summary>
/// 市级名称
/// </summary>
public string cityLevelName;
/// <summary>
/// 区级区划编号
/// </summary>
public string districtLevelDivisionNumber;
/// <summary>
/// 区级名称
/// </summary>
public string districtLevelName;
/// <summary>
/// 层级
/// </summary>
public string level;
}
public class ExcelConfig
{
/// <summary>
/// 存放excel表文件夹的的路径本例xecel表放在了"Assets/Excels/"当中
/// </summary>
public static readonly string excelsFolderPath = Application.dataPath + "/Excels/";
/// <summary>
/// 存放Excel转化CS文件的文件夹路径
/// </summary>
public static readonly string assetPath = "Assets/Resources/";
}
public class ExcelTool
{
/// <summary>
/// 读取表数据,生成对应的数组
/// </summary>
/// <param name="filePath">excel文件全路径</param>
/// <returns>Item数组</returns>
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;
}
/// <summary>
/// 读取excel文件内容
/// </summary>
/// <param name="filePath">文件路径</param>
/// <param name="columnNum">行数</param>
/// <param name="rowNum">列数</param>
/// <returns></returns>
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;
}
}