> For the complete documentation index, see [llms.txt](https://xlnt-community.gitbook.io/xlnt/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://xlnt-community.gitbook.io/xlnt/advanced/formatting.md).

# Formatting

## Format vs. Style

```c++
#include <iostream>
#include <xlnt/xlnt.hpp>

int main()
{
    xlnt::workbook wb;
    auto cell = wb.active_sheet().cell("A1");
    return 0;
}
```

In the context of xlnt, format and style have specific distinct meanings. A style in xlnt corresponds to a named style created in the "Cell styles" dropdown in Excel. It must have a name and optionally any of: alignment, border, fill, font, number format, protection. A format in xlnt corresponds to the alignment, border, fill, font, number format, and protection settings applied to a cell via right-click->"Format Cells". A cell can have both a format and a style. The style properties will generally override the format properties.

## Number Formatting

```c++
#include <iostream>
#include <xlnt/xlnt.hpp>

int main()
{
    xlnt::workbook wb;
    auto cell = wb.active_sheet().cell("A1");
    cell.number_format(xlnt::number_format::percentage());
    cell.value(0.513);
    std::cout << cell.to_string() << std::endl;
    return 0;
}
```

An xlnt::number\_format is the format code used when displaying a value in a cell. For example, a number\_format of "0.00" implies that the number 13.726 should be displayed as "13.73". Many number formats are built-in to Excel and can be access with xlnt::number\_format static constructors. Other custom number formats can be created by passing a string to the [xlnt::number\_format constructor](#cell-const-cell-amp).
