UE4自身提供的一种读写文件的组件:UDataTable。好处就是不用自己写fopen、fclose等 c++ stl API相关的逻辑,避开不同平台的差异;坏处就是你想要的功能DataTable没有实现,那么还得用fopen自己发挥。
读写excel需要导出为CSV文件,目前还不支持*.XLS格式。
下面官方文档中关于用C++代码定义行结构的用法没有具体说明:
如果是蓝图创建DataTable,那么行结构Struct也可以用UE4提供的Struct组件,创建方式是:add new -》 Blueprints -》 Structure,然后再这个Structure中设置行结构。
如果是用C++代码创建DataTable,直接new C++ class,选择继承DataTable。另外FTableRowBase可以直接定义在自定义DataTable的头文件中,例如:
#pragma once #include "Engine/DataTable.h" #include "CharactersDT.generated.h" USTRUCT(BlueprintType) struct FLevelUpData : public FTableRowBase { GENERATED_USTRUCT_BODY() public: FLevelUpData() : XPtoLvl(0) , AdditionalHP(0) {} /** The 'Name' column is the same as the XP Level */ /** XP to get to the given level from the previous level */ UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = LevelUp) int32 XPtoLvl; /** Extra HitPoints gained at this level */ UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = LevelUp) int32 AdditionalHP; /** Icon to use for Achivement */ UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = LevelUp) TAssetPtr<UTexture> AchievementIcon; };
Using excel to store gameplay data - DataTables
https://wiki.unrealengine.com/Using_excel_to_store_gameplay_data_-_DataTables
Data Driven Gameplay Elements
https://docs.unrealengine.com/latest/INT/Gameplay/DataDriven/index.html
Driving Gameplay with Data from Excel
https://forums.unrealengine.com/showthread.php?12572-Driving-Gameplay-with-Data-from-Excel
用蓝图操作DataTable的方法:
Unreal Engine, Datatables for Blueprints (build & Use)
https://www.youtube.com/watch?v=a8jMl69alrg
Excel to Unreal
https://www.youtube.com/watch?v=WLv67ddnzN0
如何用C++代码动态加载*.CSV
如果你的表格很少的话可以使用这个自带的DataTable,如果表格很多且会频繁改动,那么每次改动后都要手动在UE编辑器中一个一个操作,所以,建议用C++动态加载*.csv:
FString csvFile = FPaths::GameContentDir() + "Downloads\\DownloadedFile.csv"; if (FPaths::FileExists(csvFile )) { FString FileContent; //Read the csv file FFileHelper::LoadFileToString(FileContent, *csvFile ); TArray<FString> problems = YourDataTable->CreateTableFromCSVString(FileContent); if (problems.Num() > 0) { for (int32 ProbIdx = 0; ProbIdx < problems.Num(); ProbIdx++) { //Log the errors } } else { //Updated Successfully } }
参考自:
https://answers.unrealengine.com/questions/156354/how-to-load-the-csv-datatable-dynamically.html
相关推荐
这是我用来测试的一个工程,都不能在rich:dataTable中使用action actionListener 博文链接:https://insomniask.iteye.com/blog/111030
两种方式 一种oledb 一种 excel.application excel 转为 datatable
从Excel_导入数据到DataTable
DataTable,DataView和DataGrid用法教程:DataTable,DataView和DataGrid中一些容易混淆的概念,详细讲解了它的区别和用法。
Excel,Datatable;Excel导入到Datatable中,内涵源码,用于学习
改程序实现了Excel的数据导入到Datatable,在后台动态生成Lable和文本框等控件,以及如何取到控件的值和生成文本文档、添加显示图片等等的源代码,下载所需积分怎么涨这么快,给大家点福利,重置为5积分。
将Excel数据读取到DataTable中,通过ReadExcelToDatatable方法读取
实现excel导入数据的时候,主要分两步。首先要导入到datatable中,之后在进行修改数据库数据(第二步应该都会了吧)
可以将excel快速读取到datatable,方便调用。 非常实用哦
读取Excel数据到DataTable,用于程序开发
winform中将Datatable数据导出到Excel表格中,该项目包含了例子,能使个人能更加了解winform将datatable数据导出到excel的整个流程,本资源也可拿来即用,只需要稍加修改即可。
datatable数据导出excel,datatable数据导出excel
NULL 博文链接:https://yh-fly.iteye.com/blog/2433163
基于npoi的Excel读取,处理npoi读取Excel时的时间错误问题。能够选择Sheet列表读取。将数据转换成为datatable类型。
C# NPOI 导出Excel成DataTable,安装NPOI后,只需要传入开始行,总列数就可以把Excel中的数据读取成DataTable,使用方便,代码简单易懂
读取Excel为DataTable的三种方式:1、传统方式;2、使用第三方插件NPOI读取;3、使用使用OpenXml读取
C#操作EXCEL EXCEL类库 Excel模板处理 将DataTable数据写入Excel文件 C#数据写入EXCEL EXCEL样式管理帮助类库
NPOI 读写 excel NPOI EXCELTo DATATABLE,亲测非常好用