Browse Source

获取键

master
coffee 6 months ago
parent
commit
b8f3afdbe9
  1. BIN
      Assets/ExcelResolver/Excel/hero.xlsx
  2. 102
      Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorWindow.ReadExcel.cs
  3. 2
      Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorWindow.WriteDataCode.cs
  4. 19
      Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorWindow.cs

BIN
Assets/ExcelResolver/Excel/hero.xlsx

Binary file not shown.

102
Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorWindow.ReadExcel.cs

@ -1,7 +1,9 @@
using System.IO;
using System;
using System.IO;
using System.Linq;
using OfficeOpenXml;
using UnityEngine;
using UnityEngine.Assertions;
namespace Tools.ExcelResolver.Editor
{
@ -9,11 +11,11 @@ namespace Tools.ExcelResolver.Editor
{
private enum TableType
{
SingleKeyTable, // 单主键表
UnionMultiKeyTable, // 多主键表(联合索引)
MultiKeyTable, // 多主键表(独立索引)
NotKetTable, // 无主键表
ColumnTable, // 纵表
SingleKeyTable, // 单主键表
UnionMultiKeyTable, // 多主键表(联合索引)
MultiKeyTable, // 多主键表(独立索引)
NotKetTable, // 无主键表
ColumnTable, // 纵表
}
@ -21,10 +23,12 @@ namespace Tools.ExcelResolver.Editor
{
// 获取Excel文件
excelResolverConfig.MakeSureDirectory();
var excelFiles = new DirectoryInfo(excelResolverConfig.ExcelPathRoot).GetFiles("*.xlsx").Where(f => !f.Name.StartsWith("~$"));
var excelFiles = new DirectoryInfo(excelResolverConfig.ExcelPathRoot).GetFiles("*.xlsx")
.Where(f => !f.Name.StartsWith("~$"));
foreach (var excelFile in excelFiles)
{
using FileStream stream = File.Open(excelFile.FullName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
using FileStream stream = File.Open(excelFile.FullName, FileMode.Open, FileAccess.Read,
FileShare.ReadWrite);
using ExcelPackage package = new ExcelPackage(stream);
ExcelWorksheet worksheet = package.Workbook.Worksheets["Sheet1"];
if (null == worksheet)
@ -32,22 +36,86 @@ namespace Tools.ExcelResolver.Editor
Debug.LogError($"Excel:{excelFile.Name} don't have Sheet1 !!");
continue;
}
ExcelRange first = worksheet.Cells[1, 1];
switch (first)
var type = CheckTableType(worksheet);
foreach (var i in keyIndex)
{
Debug.Log($"{type} {i}");
}
}
}
private TableType CheckTableType(ExcelWorksheet worksheet)
{
var startColumn = worksheet.Dimension.Start.Column; // 起始列
var endColumn = worksheet.Dimension.End.Column; // 结束列
string config = worksheet.Cells[1, 1].Value.ToString();
var type = TableType.SingleKeyTable;
if (config.Contains("SingleKeyTable"))
{
type = TableType.SingleKeyTable;
var configs = config.Split("|");
Assert.IsTrue(configs.Length >= 2, "SingleKeyTable配置错误");
var key = configs[1];
var index = getKeyIndex(key);
Assert.IsTrue(index != -1, "SingleKeyTable配置错误");
keyIndex = new[] { index };
}
else if (config.Contains("UnionMultiKeyTable"))
{
type = TableType.UnionMultiKeyTable;
var configs = config.Split("|");
Assert.IsTrue(configs.Length >= 2, "UnionMultiKeyTable配置错误");
var keys = configs[1].Split(",");
keyIndex = new int[keys.Length];
for (int i = 0; i < keys.Length; i++)
{
var index = getKeyIndex(keys[i]);
Assert.IsTrue(index != -1, "UnionMultiKeyTable配置错误");
keyIndex[i] = index;
}
}
else if (config.Contains("MultiKeyTable"))
{
type = TableType.MultiKeyTable;
var configs = config.Split("|");
Assert.IsTrue(configs.Length >= 2, "UnionMultiKeyTable配置错误");
var keys = configs[1].Split(",");
keyIndex = new int[keys.Length];
for (int i = 0; i < keys.Length; i++)
{
var index = getKeyIndex(keys[i]);
Assert.IsTrue(index != -1, "UnionMultiKeyTable配置错误");
keyIndex[i] = index;
}
}
else if (config.Contains("NotKetTable"))
{
type = TableType.NotKetTable;
}
else if (config.Contains("ColumnTable"))
{
type = TableType.ColumnTable;
}
return type;
private TableType CheckTableType(ExcelRange first)
{
string tableConfig = first.Value.ToString();
return TableType.SingleKeyTable;
int getKeyIndex(string key)
{
int keyIndex = -1;
for (int col = startColumn; col <= endColumn; col++)
{
var cellValue = worksheet.Cells[2, col].Text; // 获取第二行第 col 列的文本值
if (string.Equals(cellValue, key, StringComparison.OrdinalIgnoreCase)) // 忽略大小写比较
{
keyIndex = col;
break;
}
}
return keyIndex;
}
}
}
}

2
Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorWindow.WriteDataCode.cs

@ -4,6 +4,8 @@ namespace Tools.ExcelResolver.Editor
{
public sealed partial class ExcelResolverEditorWindow
{
private int[] keyIndex;
private void WriteTypeCode()
{
var code = new RootCode();

19
Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorWindow.cs

@ -29,16 +29,17 @@ namespace Tools.ExcelResolver.Editor
}
}
[OnInspectorGUI]
private void DrawGenerateButton()
{
GUILayout.FlexibleSpace(); // 把空白区域推向上方
if (GUILayout.Button("Generate", GUILayout.Height(50)))
{
Generate();
}
}
// [OnInspectorGUI]
// private void DrawGenerateButton()
// {
// GUILayout.FlexibleSpace(); // 把空白区域推向上方
// if (GUILayout.Button("Generate", GUILayout.Height(50)))
// {
// Generate();
// }
// }
[Button(ButtonSizes.Gigantic)]
private void Generate()
{
// 按钮逻辑

Loading…
Cancel
Save