https://github.com/imbus/robotframework-tablelibrary
Robot Framework Library for easy handling of tabular data formats such as CSV, Excel, Parquet, and more.
https://github.com/imbus/robotframework-tablelibrary
robotframework robotframework-library testing
Last synced: 9 days ago
JSON representation
Robot Framework Library for easy handling of tabular data formats such as CSV, Excel, Parquet, and more.
- Host: GitHub
- URL: https://github.com/imbus/robotframework-tablelibrary
- Owner: imbus
- License: apache-2.0
- Created: 2025-07-01T10:23:26.000Z (12 months ago)
- Default Branch: main
- Last Pushed: 2026-02-22T00:15:25.000Z (4 months ago)
- Last Synced: 2026-02-22T08:13:36.870Z (4 months ago)
- Topics: robotframework, robotframework-library, testing
- Language: Python
- Homepage: https://imbus.github.io/robotframework-tablelibrary/keywords.html
- Size: 310 KB
- Stars: 3
- Watchers: 1
- Forks: 0
- Open Issues: 8
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
RobotFramework Table Library
## Statistics
[](https://github.com/imbus/robotframework-tablelibrary/actions/workflows/release.yml)
[](https://github.com/imbus/robotframework-tablelibrary/actions/workflows/build.yml)
[](https://pypi.org/project/robotframework-tablelibrary)
[](https://pypi.org/project/robotframework-tablelibrary)
[](https://pepy.tech/projects/robotframework-tablelibrary)
[](https://pepy.tech/projects/robotframework-tablelibrary)
## Keyword Documentation
Here you can find the **[Keyword Documentation](https://imbus.github.io/robotframework-tablelibrary/keywords.html)** generated by ``libdoc``.
## 📊 RobotFramework TableLibrary
**TableLibrary** is a Robot Framework library designed for easy handling of tabular data formats such as **CSV**, **Excel**, **Parquet**, and more.
It provides a unified interface for **reading**, **modifying**, and **creating** tables directly within your Robot Framework tests.
### 🔍 Key Features
- **Read Tables**
- Supports formats like `.csv`, `.xlsx`, `.xls`, `.parquet`, `.json`, `.txt (as csv)`, and more.
- Access table contents by column name or index.
- Verifying specific table cells, columns or rows & executing assertions using the ``robotframework-assertion-engine``
- **Modify Existing Tables**
- Add, remove, or update rows and columns.
- Apply dynamic modifications during test execution.
- **Create New Tables**
- Create tables from lists, dictionaries, or other data sources.
- Export tables to multiple file formats (e.g., CSV, Excel, Parquet).
- Easily generate structured test data in the given file format.
### Exception: Excel File Handling
We have included a basic handling of ``Excel`` files, but for more complex excel features, please take a look at the following library: **[robotframework-excelsage](https://pypi.org/project/robotframework-excelsage)**
This library got especially written to work with more complex ``Excel`` features like e.g. ``Excel Sheets``, etc...
## Installation
You can install the library using the following command:
```console
pip install robotframework-tablelibrary
```
## Example
### File Format - CSV
```
# Reading CSV file with header column
${content} = Tables.Read Table ${CURDIR}${/}testdata${/}example_01.csv
${result} = BuiltIn.Evaluate "${content}[0][0]" == "index"
BuiltIn.Should Be True ${result}
```
```
# Reading CSV file without header column
Tables.Configure Ignore Header True
${content} = Tables.Read Table ${CURDIR}${/}testdata${/}example_01.csv
${result} = BuiltIn.Evaluate "index" not in "${content}"
BuiltIn.Should Be True ${result}
```
### File Format - Parquet
```
${content} = Tables.Read Table ${CURDIR}${/}testdata${/}example_05.parquet
${result} = BuiltIn.Evaluate "${content}[0][0]" == "_time"
BuiltIn.Should Be True ${result}
```
### Create new empty table - don't save to file system
```
# Create some data which should be inserted into the new table
VAR @{headers} = name age
VAR @{person1} = Michael 34
VAR @{person2} = John 19
# Create empty table object - internally in cache
${uuid} = Tables.Create Table headers=${headers}
# Append some rows
Tables.Append Row ${person1}
Tables.Append Row ${person2}
Count Table ${uuid} Rows equal ${3}
# Append a column
VAR @{column1} = city MG ERL
Tables.Append Column ${column1}
Count Table ${uuid} Columns equal ${3}
# Optional: Set new table cell value
Get Table Cell 1 1 equals 34
Tables.Set Table Cell 25 0 1
Get Table Cell 1 1 equals 25
# Insert a new row into the existing table object
VAR @{insert_row} = Lu 26 Hamburg
Insert Row ${insert_row} 0
Get Table Cell 1 0 equals Lu
Count Table ${uuid} Rows equal ${4}
```
### Create new empty table - save to file system
```
# Generate new headers which should be used in the table
VAR @{headers} = name age
# Create new table object
${uuid} = Create Table ${headers}
# Generate some random data & append as rows to new table
FOR ${_} IN RANGE ${100}
${a} = Generate Random String
${b} = Generate Random String
VAR @{data} ${a} ${b}
Tables.Append Row ${data}
END
# Ensure that data got written into internal table object
Count Table ${uuid} Rows equals ${101}
# Write table to specific file path -> write from cache into persistant file
Write Table ${uuid} ${CURDIR}/results/test_writer_new_table.csv
# Check table content again, but now read table from file path!
Count Table ${CURDIR}/results/test_writer_new_table.csv Rows equals ${101}
```
## Contribution & Development
See [Development.md](./DEVELOPMENT.md) for more information about contributing & developing this library.
## License
``robotframework-tablelibrary`` is distributed under the terms of the [Apache License 2.0](https://www.apache.org/licenses/LICENSE-2.0) license.