Component.Excel namespace provides access to FFXIV’s game data system, which stores most static game data in Excel sheets (.exd files).
Overview
FFXIV stores game data in Excel-like sheets:- Items, actions, quests, NPCs, etc.
- Multi-language support
- Row-based data with columns
- Type-safe access through ExcelRow
ExcelModuleInterface
Main interface for accessing Excel sheets.Structure
Getting Sheets
Supported Languages
ExcelRow
Represents a single row in an Excel sheet.Structure
Reading Data
Column Types
Excel columns can be:- Numeric: int, uint, byte, short, etc.
- String: Text data (UTF-8)
- RSV (Reserved): Placeholder/unused columns
ExcelRowDescriptor
Describes the structure of a row.Structure
IExcelRowWrapper
Interface for strongly-typed Excel row access.Structure
Purpose
Provides type-safe wrapper around raw ExcelRow data:- Validates row structure
- Provides named property access
- Handles type conversions
ExcelLanguageEvent
Event triggered when language changes.Structure
Common Excel Sheets
Items
Actions
Quest Data
Integration with ExdModule
The Excel system works with Component.Exd.ExdModule:Example: Reading Item Data
Example: Iterating Sheet Rows
Performance Considerations
- Cache sheet pointers: GetSheetByName has lookup cost
- Batch reads: Read multiple columns in one access
- Check RSV columns: Skip reserved/unused columns
- String indirection: Strings require extra pointer resolution
Best Practices
- Validate pointers: Always null-check sheet and row pointers
- Know column indices: Column order varies by sheet
- Handle languages: Some data is language-specific
- Use Lumina: For comprehensive sheet definitions, see Lumina library
- Type safety: Cast column pointers to correct types
Common Pitfalls
- Wrong column index: Columns vary between game versions
- Missing RSV check: Reading reserved columns returns garbage
- String lifetime: Resolved strings are pointers, not copies
- Language mismatch: Current language affects text columns
- Row ID vs Index: Some sheets use sparse row IDs
See Also
- Component.Exd - Low-level Excel data module
- Component.Text - Text processing and macros
- Lumina - External library with sheet definitions