---
source: https://carbone.io/examples/stock-inventory-spreadsheet/
title: "Create Stock Inventory Reports | Carbone Template Example"
description: "Learn how to generate professional stock inventory reports using Carbone. Create dynamic spreadsheets with multiple sheets, loops, and nested data from JSON using ODS templates."
generated_at: "2026-07-13"
---

# Stock inventory spreadsheet

Create stunning reports for your stock inventory

[![stock-inventory-spreadsheet thumbnail](/examples/stock-inventory-spreadsheet/thumb-result.webp)](/examples/stock-inventory-spreadsheet/result.pdf)

[Download Template](/examples/stock-inventory-spreadsheet/template.ods)

[Download data sample](/examples/stock-inventory-spreadsheet/data.json)

-   Template type spreadsheet ods simple
-   Carbone min. v4.24.0+
-   Features loop alias
-   Target inventory checking new sheet

## Overview

Learn how to generate professional spreadsheets for your stock inventory management that can:

-   Create multiple sheets automatically
-   Display product lists using loops
-   Handle nested data structures for product characteristics

## Step-by-Step Guide

Follow these steps to create an ODS (OpenDocument Spreadsheet) template with Carbone:

### 1\. Design Your First Sheet

Start by creating the main sheet layout using [Carbone tags](/documentation/design/substitutions/the-basics.md). Implement [loops](/documentation/design/repetitions/with-arrays.md) and [nested loops](/documentation/design/repetitions/with-arrays.md#nested-arrays) to display your data dynamically.

Example template structure:

```text
{d.brands[i].products[i].name}
    {d.brands[i].products[i].packaging[i].size} {d.brands[i].products[i].packaging[i].quantity}
    {d.brands[i].products[i].packaging[i+1]}
{d.brands[i].products[i+1]}
```

### 2\. Set Up Sheet Name Aliases

Define [aliases](/documentation/design/substitutions/aliases.md) using the `{#...=...}` syntax to create dynamic sheet names:

```text
{#sheet1 = d.brands[i].name}
{#sheet2 = d.brands[i+1].name}
```

### 3\. Apply Dynamic Sheet Names

To rename your sheets using the aliases:

-   Right-click on the sheet tab
-   Select **Rename sheet...**
-   Enter the alias using the `{$...}` syntax:
    -   First sheet: `{$sheet1}`
    -   Second sheet: `{$sheet2}`

Your template is now ready to generate dynamic inventory reports!

## Related Examples

Check out these similar templates to learn more:

[![quote-with-datasheet thumbnail example](/examples/quote-with-datasheet/thumb-result.webp)](/examples/quote-with-datasheet/index.md)

## Trusted by 800+ paid customers in 40+ countries

## Related topics

- [Transport ticket](/examples/ticket/index.md)
- [Summary](/examples/summary/index.md)
- [Store Inventory](/examples/shoes/index.md)
- [Sensor readings](/examples/sensor-readings/index.md)
- [Real estate property document](/examples/real-estate-property-description/index.md)
- [Automation of Quotes](/examples/quote-with-datasheet/index.md)
