# Write Row

> Write Row activity that writes a single row of data to a sheet in a LibreOffice Calc spreadsheet, relative to an anchor range.

`UiPath.LibreOfficeCalc.Activities.WriteRow`

:::note
The **LibreOffice Calc** activities package is available in preview.
:::

## Description

Writes a single row of data to a sheet in the specified spreadsheet, relative to an anchor range.

This activity writes one row of data to a LibreOffice Calc spreadsheet. The row is written relative to an anchor range, and you control whether it is appended, overwritten, or inserted. You can provide the row data either as a `System.Data.DataRow` or as an array of values.

Each value is written as if it were typed into the cell, using invariant formatting, so what gets stored does not depend on the robot's regional settings. A number is stored as a number, and a value starting with `=` is written as a formula and calculated. Dates, times, and booleans are stored as their underlying number, as described for the [Write Cell](https://docs.uipath.com/activities/other/latest/productivity/libreoffice-calc-write-cell) activity.

:::note
This package requires LibreOffice to be installed, and runs on Windows x64 or macOS 13.3 or later on Apple Silicon.
:::

## Project compatibility

Windows | Cross-platform

## Configuration

You can configure the activity and its properties as follows:

* **File path** - The path to the spreadsheet file (`.ods`, `.xlsx`, `.csv`). The field also accepts a file resource through the **Use resource file** option in the plus menu, which replaces this field with **Resource file**. When the activity is placed inside a **Use Spreadsheet Document** scope, this field is replaced by **Spreadsheet document**, which is bound to the document opened by the scope.
* **Sheet** - The name of the sheet to write to, for example, `Sheet1`. The field lists the sheets found in the selected file, and you can also type a name or an expression.
* **Range** - The anchor range in A1 notation, for example, `B2` or `B2:D2`. It determines where the row is written, appended, or inserted. If empty, the sheet's used range is used.
* **How to write** - How to add the data to the indicated range. Select one of the following options:
  + **Append** - Writes below the existing data. This is the default option.
  + **Overwrite** - Writes over the existing cells at the position.
  + **Insert** - Shifts existing rows down, then writes.
* **Has headers** - Whether the range includes a header row, used to adjust the row-position offset. Applies only to the **Overwrite** and **Insert** write modes. By default, this option is set to **False**.
* **Row position** - The row index, relative to the range, where to write. Applies only to the **Overwrite** and **Insert** write modes.
* **What to write** - Selects which input provides the row data: **Data row** or **Array of values**. Defaults to **Data row**.
* **Data row** - The row data, as a `System.Data.DataRow`. Used when **What to write** is set to **Data row**.
* **Array row** - The row data, as an enumerable of values. Used when **What to write** is set to **Array of values**.

:::note
For more details on the plus menu options, see [Designing automations](https://docs.uipath.com/studio/standalone/latest/user-guide/designing-automations).
:::

### Properties panel

#### Options
* **Password** - The password to open a password-protected spreadsheet file. Leave empty for unprotected files.
