unity在读取xlsx文件时出现字符串无法被识别为合法的bool值,但是代码中并未出现关于bool值的要求
以下为代码片段
using (ExcelPackage excelpackage = new ExcelPackage(fileInfo))
{
if (excelpackage == null)
{
Debug.LogError("Failed to open Excel package.");
return;
}
ExcelWorksheet worksheet = excelpackage.Workbook.Worksheets["sheet1"];
for (int row = worksheet.Dimension.Start.Column + 3; row <= worksheet.Dimension.End.Row; row++)
{
LevelItem levelItem = new LevelItem();
Type type = typeof(LevelItem);
for (int j = worksheet.Dimension.Start.Row; j <= worksheet.Dimension.End.Column; j++)
{
try
{
string fieldName = worksheet.Cells[2, j].Text;
if (string.IsNullOrEmpty(fieldName))
{
continue; // 跳过空字段名
}
FieldInfo variable = type.GetField(fieldName);
if (variable == null)
{
Debug.LogWarning("Field not found: " + fieldName);
continue; // 跳过找不到的字段
}
string tableValue = worksheet.Cells[row, j].Text.ToString();
object value = Convert.ChangeType(tableValue, variable.FieldType);
Debug.Log(row+" "+j+" "+variable.FieldType);
variable.SetValue(levelItem, value);
}
catch (Exception ex)
{
Debug.LogError("Error processing row " + row + ", column " + j + ": " + ex.Message);
}
}
levelData.levelDataList.Add(levelItem);
}
}
报错如下:
Error processing row 4, column 6: String was not recognized as a valid Boolean.
UnityEngine.Debug:LogError (object)
Startup:.cctor () (at Assets/Editor/ReadTable.cs:69)
UnityEditor.EditorAssemblies:ProcessInitializeOnLoadAttributes (System.Type[])
测试表格如下: