95 lines
2.8 KiB
Markdown
95 lines
2.8 KiB
Markdown
# Sheet
|
|
|
|
The idea is to have a module which allows us to make software representation of a spreadsheet.
|
|
|
|
The spreadsheet has a currency linked to it and also multi currency behavior, it also has powerful extra/intrapolation possibilities.
|
|
|
|
A sheet has following format
|
|
|
|
If we have 60 months representation (5 year), we have 60 columns
|
|
|
|
- rows, each row represent something e.g. salary for a person per month over 5 years
|
|
- the rows can be grouped per tags
|
|
- each row has 60 cols = cells, each cell has a value
|
|
- each row has a name
|
|
|
|
A sheet can also be represented per year or per quarter, if per year then there would be 5 columns only.
|
|
|
|
There is also functionality to export a sheet to wiki (markdown), html representation, or CSV format.
|
|
|
|
## Exporting to CSV
|
|
|
|
You can export sheet data to CSV format with pipe separation (or custom separator) using the `export_csv` method:
|
|
|
|
```v
|
|
// Create a sheet
|
|
mut sheet := sheet_new(name: 'my_sheet', nrcol: 12)!
|
|
|
|
// Add rows and data to the sheet
|
|
// ...
|
|
|
|
// Export to a CSV file with default pipe separator
|
|
sheet.export_csv(path: '~/output.csv')!
|
|
|
|
// Export with custom separator and include empty cells
|
|
csv_content := sheet.export_csv(
|
|
path: '~/output.csv',
|
|
separator: ',',
|
|
include_empty: true
|
|
)!
|
|
|
|
// Export to string only (no file)
|
|
csv_string := sheet.export_csv(path: '')!
|
|
```
|
|
|
|
The CSV export includes the following features:
|
|
- Default pipe (`|`) separator (configurable)
|
|
- Proper handling of special characters in text fields
|
|
- Option to include or exclude empty cells
|
|
- Automatic formatting of numeric values
|
|
|
|
## offline
|
|
|
|
if you need to work offline e.g. for development do
|
|
|
|
```bash
|
|
export OFFLINE=1
|
|
```
|
|
|
|
## Macro's
|
|
|
|
|
|
|
|
```js
|
|
!!sheet.graph_pie_row sheetname:'tfgridsim_run1'
|
|
rowname:'revenue_usd'
|
|
period_type:quarter
|
|
title:'a title'
|
|
```
|
|
|
|
- supported_actions:
|
|
- 'sheet_wiki'
|
|
- 'graph_pie_row' = pie chart for 1 row
|
|
- 'graph_line_row'
|
|
- 'graph_bar_row'
|
|
- 'graph_title_row'
|
|
- 'wiki_row_overview'
|
|
|
|
|
|
Properties to use in heroscript
|
|
|
|
- rowname string - if specified then its one name
|
|
- namefilter []string - only include the exact names as specified for the rows
|
|
- includefilter []string - to use with tags filter e.g. ['location:belgium_*'] //would match all words starting with belgium
|
|
- excludefilter []string
|
|
- period_type PeriodType - year, month, quarter
|
|
- aggregate bool = true - if more than 1 row matches should we aggregate or not
|
|
- aggregatetype RowAggregateType = .sum - important if used with include/exclude, because then we group
|
|
- unit UnitType
|
|
- title string
|
|
- title_sub string
|
|
- size string
|
|
- rowname_show bool = true - show the name of the row
|
|
- descr_show bool = false - show the description of the row, if this is on then rowname_show will be put on 0
|
|
- description string
|