This commit is a big refactor that improves the code organization.
It focuses on how dependencies are injected into the different classes. This is now done via some factories.
Also, the code is now built around entities (data model that only exposes getters and setters), managers (used to manage an entity) and helpers (used by the managers to perform some specific tasks).
The refactoring is not fully complete, as some dependencies are still hidden...
Fixes#295
If a row should be written with a custom style, the handling of empty cells should change.
Instead of being skipped entirely, empty cells will be applied the custom style, if this style has custom background color or borders.
If not, then the cell definition can still be skipped.
* Fix#276, some general refinement
* Failing test #267
* Fixed shared border definitions across different styles #267
* Fix finding the correct borderId
Added ODS writer
Refactored XLSX writer to abstract some pieces into an abstract multi-sheets writer
Created an abstract style helper
Moved shared components around
Added top level methods on the Writer:
- addRowWithStyle()
- addRowsWithStyle()
Added a style builder, to easily create new styles.
Each writer can specify its own default style and all styles will automatically inherit from it.
For now, the style properties supported are:
- bold
- italic
- underline
- strikethrough
- font size
- font name
- wrap text (alignment)