csb43
=====
Español
-------
Herramientas para convertir ficheros en formato usado por múltiples
bancos españoles (**norma 43 del Consejo Superior Bancario** [*CSB43*]
/ **Asociación Española de Banca** [*AEB43*]) a otros formatos.
csb2format
~~~~~~~~~~
Conversor de ficheros en **CSB/AEB norma 43** a otros formatos.
Formatos soportados:
- `OFX XML <http://www.ofx.net>`_ v1.0.3 & v2.1.1
- `HomeBank CSV <http://homebank.free.fr/help/06csvformat.html>`_
- *HTML*
- *JSON*
- *ODS*: hoja de cálculo OpenDocument
- *CSV*, *TSV*: valores separados por coma o tabulador
- *XLS*: hoja de cálculo de Microsoft Excel
- *XLSX*: hoja de cálculo OOXML
- *YAML*
Instalación:
^^^^^^^^^^^^
Todos los formatos disponibles:
::
pip install csb43[all]
Formatos internos (ofx, ofx1, homebank) más YAML:
::
pip install csb43[yaml]
Formatos internos (ofx, ofx1, homebank) más formatos del paquete `tablib`:
::
pip install csb43[formats]
Opciones:
^^^^^^^^^
::
usage: csb2format [-h] [-s] [-df] [-d DECIMAL] [-e ENCODING] [--use-float]
[-V]
[-f {csv,dbf,df,homebank,html,json,latex,ods,ofx,ofx1,tsv,xls,xlsx,yaml}]
[-v]
csbFile convertedFile
Convierte un fichero CSB43 a otro formato
optional arguments:
-h, --help show this help message and exit
-v, --version show program's version number and exit
csb43 arguments:
csbFile fichero csb43 ('-' para entrada estándar)
-s, --strict modo estricto (por defecto: False)
-df, --dayfirst usa DDMMYY -día, mes, año- como formato de fecha al
interpretar los datos del fichero csb43 en lugar de
YYMMDD -año, mes, día- (por defecto: True)
-d DECIMAL, --decimal DECIMAL
establece el número de dígitos decimales a considerar
en el tipo de divisa (por defecto: 2)
-e ENCODING, --encoding ENCODING
establece la codificación de entrada ('cp850' para
fichero AEB estándar, por defecto: 'latin1')
--use-float exporta cantidades monetarias usando números binarios
en punto flotante como último recurso (default: False)
-V, --verbose mostrar avisos de csb43
output arguments:
convertedFile fichero de destino ('-' para salida estándar)
-f {csv,dbf,df,homebank,html,json,latex,ods,ofx,ofx1,tsv,xls,xlsx,yaml}, --format {csv,dbf,df,homebank,html,json,latex,ods,ofx,ofx1,tsv,xls,xlsx,yaml}
Formato del fichero de salida (por defecto: ofx)
Ejemplos
^^^^^^^^
- Convertir a formato OFX:
::
$ csb2format transactions.csb transactions.ofx
$ csb2format --format ofx transactions.csb transactions.ofx
o bien
::
$ csb2format transactions.csb - > transactions.ofx
Desde una aplicación de recuperación de datos a otro fichero
::
$ get_my_CSB_transactions | csb2format - transactions.ofx
- Convertir a hoja de cálculo XLSX (Excel):
::
$ csb2format --format xlsx transactions.csb transactions.xlsx
- Usando cp850 como codificación de entrada:
::
$ csb2format --encoding cp850 --format xlsx transactions.csb transactions.xlsx
Hojas de cálculo
^^^^^^^^^^^^^^^^
Los ficheros en *ODS*, *XLS* y *XLSX* se generan a modo de libro, conteniendo
la primera hoja la información relativa a las cuentas, y las hojas
siguientes conteniendo cada una los movimientos de cada cuenta.
En Python
~~~~~~~~~
Lee un archivo *CSB43* e imprime el contenido equivalente en *OFX*
::
:::python
# OFX
from csb43.ofx import converter as ofx_converter
from csb43.csb43 import File
csbFile = File(open("movimientos.csb", "rb"), strict=False)
# imprime a stdout
print(ofx_converter.convertFromCsb(csbFile))
Lee un archivo *CSB* e imprime el contenido equivalente a *CSV* de
*Homebank*
::
:::python
# Homebank
from csb43.homebank import converter as hbk_converter
from csb43.csb43 import File
csbFile = File(open("movimientos.csb", "rb"), strict=False)
# imprime a stdout
for line in hbk_converter.convertFromCsb(csbFile):
print(line)
Lee un archivo *CSB* e imprime el equivalente en un archivo de formato
tabular o de diccionario
::
:::python
from csb43 import csb43, formats
csbFile = csb43.File(open("movimientos.csb", "rb"), strict=False)
# imprime formato 'yaml' a stdout
o = formats.convertFromCsb(csbFile, 'yaml')
print(o.yaml)
# escribe a archivo en formato 'xlsx'
o = formats.convertFromCsb(csbFile, 'xlsx')
with open("movimientos.xlsx", "wb") as f:
f.write(o.xlsx)
--------------
English
-------
Tools for converting from the Spanish banks' format **CSB norm 43**
(*CSB43*).
csb2format
~~~~~~~~~~
Convert a **CSB/AEB norm 43** file to other file formats.
Supported formats:
- OFX v1.0.3 (SGML) & v2.1.1 (XML)
- `HomeBank CSV <http://homebank.free.fr/help/06csvformat.html>`_
- *HTML*
- *JSON*
- *ODS*: OpenDocument spreadsheet
- *CSV*, *TSV*: comma- or tab- separated values
- *XLS*: Microsoft Excel spreadsheet
- *XLSX*: OOXML spreadsheet
- *YAML*
Installing:
^^^^^^^^^^^^
All the available formats:
::
pip install csb43[all]
Built-in formats (ofx, ofx1, homebank) plus YAML:
::
pip install csb43[yaml]
Built-in formats (ofx, ofx1, homebank) plus formats provided by the package
`tablib`:
::
pip install csb43[formats]
If you don't need all the formats supported by tablib, you can use;
::
pip install csb43[basic_formats]
Options:
^^^^^^^^
::
usage: csb2format [-h] [-s] [-df] [-d DECIMAL] [-e ENCODING] [--use-float]
[-V]
[-f {csv,dbf,df,homebank,html,json,latex,ods,ofx,ofx1,tsv,xls,xlsx,yaml}]
[-v]
csbFile convertedFile
Convert a CSB43 file to another format
optional arguments:
-h, --help show this help message and exit
-v, --version show program's version number and exit
csb43 arguments:
csbFile a csb43 file ('-' for stdin)
-s, --strict strict mode (default: False)
-df, --dayfirst use DDMMYY as date format while parsing the csb43 file
instead of YYMMDD (default: True)
-d DECIMAL, --decimal DECIMAL
set the number of decimal places for the currency type
(default: 2)
-e ENCODING, --encoding ENCODING
set the input encoding ('cp850' for standard AEB file,
default: 'latin1')
--use-float export monetary amounts using binary floating point
numbers as a fallback (default: False)
-V, --verbose show csb43 warnings
output arguments:
convertedFile destination file ('-' for stdout)
-f {csv,dbf,df,homebank,html,json,latex,ods,ofx,ofx1,tsv,xls,xlsx,yaml}, --format {csv,dbf,df,homebank,html,json,latex,ods,ofx,ofx1,tsv,xls,xlsx,yaml}
Format of the output file (default: ofx)
Examples
^^^^^^^^
- Converting to OFX format:
::
$ csb2format transactions.csb transactions.ofx
$ csb2format --format ofx transactions.csb transactions.ofx
or
::
$ csb2format transactions.csb - > transactions.ofx
From another app to file
::
$ get_my_CSB_transactions | csb2format - transactions.ofx
- Converting to XLSX spreadsheet format:
::
$ csb2format --format xlsx transactions.csb transactions.xlsx
- Using cp850 as the input encoding:
::
$ csb2format --encoding cp850 --format xlsx transactions.csb transactions.xlsx
Spreadsheets
^^^^^^^^^^^^
*ODS*, *XLS* and *XLSX* files are generated as books, with the first sheet
containing the accounts information, and the subsequent sheets
containing the transactions of each one of the accounts.
Using Python
~~~~~~~~~~~~
Parse a *CSB43* file and print the equivalent *OFX* file
::
:::python
# OFX
from csb43.ofx import converter as ofx_converter
from csb43.csb43 import File
csbFile = File(open("movimientos.csb", "rb"), strict=False)
# print to stdout
print(ofx_converter.convertFromCsb(csbFile))
Parse a *CSB43* file and print the equivalent *HomeBank CSV* file
::
:::python
# Homebank
from csb43.homebank import converter as hbk_converter
from csb43.csb43 import File
csbFile = File(open("movimientos.csb", "rb"), strict=False)
# print to stdout
for line in hbk_converter.convertFromCsb(csbFile):
print(line)
Parse a *CSB43* file and print the equivalent in a tabular or
dictionary-like file format
::
:::python
from csb43 import csb43, formats
csbFile = csb43.File(open("movimientos.csb", "rb"), strict=False)
# print 'yaml' format to stdout
o = formats.convertFromCsb(csbFile, 'yaml')
print(o.yaml)
# write 'xlsx' format to file
o = formats.convertFromCsb(csbFile, 'xlsx')
with open("movimientos.xlsx", "wb") as f:
f.write(o.xlsx)
Instalación
-----------
Usando *pip*
::
$ pip install csb43
Installing
-----------
Using *pip*
::
$ pip install csb43
Changelog
-----------
0.9.2
~~~~~
- Fixed setuptool's deprecation warning on python==3.10 (thanks to @mb)
- Fixed duplicated documentation of the same objects by sphinx (thanks to @mb)
0.9.1
~~~~~
- Added python_requires >= 3.6 (thanks to Cédric Krier)
0.9.0
~~~~~
- Dropped support for Python 2 (thanks to Sergi Almacellas)
- Added support for Python 3.8 and 3.9 (thanks to Sergi Almacellas)
- Added compatibility with tablib >= 1.0.0 (thanks to Sergi Almacellas)
- Type hinting
0.8.4
~~~~~
- Fixed tablib requirement (< 1.0.0)
- Fixed parsing of records with code 00 (thanks to Uttam Sharma)
0.8.2
~~~~~
- Do not fail with C locale (thanks to Cédric Krier)
0.8.1
~~~~~
- Fixed decimal values conversion in JSON and tabular formats (thanks to Harshad Modi).
- Fixed OFX validation (ORIGCURRENCY field).
- An error is raised when the currency code is not found.
0.8
~~~
- Text values are stored as string instead of bytes (thanks to Sergi Almacellas)
- Warnings are raised using the 'warnings' module.
- An encoding where control characters are different from ascii is not allowed. An exception will be raised.
- csb2format: added encoding as a new parameter.
0.7
~~~
- Defined installation targets: `yaml` and `formats` (thanks to Sergi Almacellas & Cédric Krier).
- Updated README file (thanks to Sergi Almacellas).
- Removed `simplejson` dependency.
- Dates stored as `date` instead of `datetime` (thanks to Sergi Almacellas).
- Monetary amounts are represented as `Decimal` instead to `float` in order to prevent representation and rounding issues. These fields are exported as a string by default, conversion to float is optional (thanks to Sergi Almacellas & Cédric Krier).
- Added temprary dependency to `openpyxl < 2.5.0` to prevent issue while trying to export to xlsx.
0.6
~~~~
- Fixed usage of pycountry >= 16.10.23rc1 objects (thanks to Alex Barcelo).
- Package refactored to simplify the structure.
0.5
~~~~
- Fixed conversion to binary formats in python 2.
- `tablib` backend supported in python 3.
- N43 warnings are silenced by default.
0.4
~~~~
- OFX v 1.0.3 supported.
- OFX Tag inv401source renamed to inv401ksource.
- Unique transaction id when generating OFX file (thanks to Julien Moutte).
0.3.4
~~~~~
- Most Spanish N43 files will use LATIN-1 encoding not pure ASCII (thanks to Julien Moutte).
- Regular expression to check for account name is too limited (thanks to Julien Moutte).
- Reference1 can hold non numerical data in information mode 1 and 2 (thanks to Julien Moutte).
- Currency data as an inmutable list.
0.3.3
~~~~~
- Fixed deficiencies in OFX conversion (thanks to Andrea Santambrogio). Checked XML validation against OFX2_Protocol.xsd
0.3
~~~~
- Compatible with Python 3 (except "tablib" dependencies)
0.2.3
~~~~~~
- Fixed shebang header of csb2format
0.2.2
~~~~~~
- csb2format adapted to pyinstaller
- Executable file for Windows
0.2.1
~~~~~
- Trivial changes
0.2
~~~~
- Several bugfixes
- Bidirectional use of objects (file -> object, object -> file)
- Added conversion to spreadsheets, dict and tabular formats (thanks to tablib)
- Localization to Spanish
- Sphinx documentation
0.1
~~~
- Initial release