跳转到主要内容

将专有银行对账单转换为OFX格式的工具,适用于导入到GnuCash

项目描述

变更

0.9.1 (2023-09-16)

  • 使OFX输出符合DTD (#243)。

0.9.0 (2023-08-07)

  • convert命令添加新选项-c (--config),允许指定要使用的配置文件 (#235)。
  • 打印输出中的交易数量 (#236)。

0.8.0 (2021-09-06)

  • 在对账单行中支持OFX CURRENCY和ORIGCURRENCY。这允许插件向生成的OFX对账单添加有关交易货币的信息。
  • convert命令添加--pretty标志以生成格式良好的OFX文件。

0.7.1 (2020-09-14)

  • 将PEP-561标记包含到源代码分发中

0.7.0 (2020-09-13)

  • 停止支持Python 3.4、3.5,添加对Python 3.8的支持
  • 修复了无知的最终余额验证 (#106)
  • 现代化开发环境(使用pipenv、mypy、black)

0.6.5 (2020-06-09)

  • 添加了余额检查并改进了唯一ID的生成 (#100, #104)

0.6.4 (2020-03-04)

  • 修复了0.6.3中引入的回归 - edit-config命令停止工作。

0.6.3 (2020-02-13)

  • 修复了Windows上的配置编辑

0.6.2 (2020-01-20)

  • 改善了对edit-config命令的EDITOR环境变量的处理
  • 支持Python-3.7
  • API:StatementLine.date_user(用户发起交易的时间)的类型默认不是字符串。
  • API:更多唯一生成的交易ID(当从对账单文件中不可用时)

0.6.1 (2017-05-07)

  • 修复了python-3.5上的安装问题 (#55)

0.6.0 (2016-12-02)

  • 支持为每条解析的语句行指定账户信息,并将其转换为OFX中的BANKACCTTO聚合。

  • 命令行选项以显示调试信息(--debug)。

  • 修复配置文件位置,适用于appdirs >= 1.3.0

0.5.0 (2013-11-03)

  • 插件现在通过setuptools的entry-points机制进行注册。这允许插件存在于独立的eggs中,并且可以独立于ofxstatement本身进行开发。插件作为'ofxstatement'入口点进行注册(#11)。

  • 命令行接口已更改:现在ofxstatement接受"action"参数,并添加了一些操作

    • ofxstatement convert:执行转换为OFX
    • ofxstatement list-plugins:列出可用的转换插件
    • ofxstatement edit-config:启动默认编辑器以编辑配置文件
  • ofxstatement convert可以在没有任何配置的情况下运行。在这种情况下,使用-t TYPE参数指定要使用的插件名称(#12)。

  • StatementLine支持更多属性,转换为OFX(#13)

    • refnum - 转换为OFX中的<REFNUM>
    • trntype - 转换为OFX中的<TRNTYPE>

OFX 语句

.. image:: https://github.com/kedder/ofxstatement/actions/workflows/test.yml/badge.svg?branch=master :target: https://github.com/kedder/ofxstatement/actions/workflows/test.yml .. image:: https://coveralls.io/repos/kedder/ofxstatement/badge.png?branch=master :target: https://coveralls.io/r/kedder/ofxstatement?branch=master .. image:: http://www.mypy-lang.org/static/mypy_badge.svg :target: http://mypy-lang.org/ .. image:: https://img.shields.io/badge/code%20style-black-000000.svg :target: https://github.com/psf/black

Ofxstatement是一种将专有银行对账单转换为OFX格式的工具,适用于导入到GnuCash等个人会计系统中。此软件包提供了一个名为ofxstatement的命令行工具。运行ofxstatement -h以获取更多帮助。ofxstatement在Python 3下运行,与Python 2不兼容。

原理

大多数在线银行系统都能够将账户交易导出为某种计算机可读的格式,但很少支持标准数据格式,如OFX。另一方面,GnuCash等个人会计系统仅支持标准格式,并且可能永远不会支持在线银行系统的专有对账单格式。

为了弥合它们之间的差距,创建了此ofxstatement工具。

.. _GnuCash: http://gnucash.org/ .. _OFX: http://en.wikipedia.org/wiki/Open_Financial_Exchange

操作模式

ofxstatement工具旨在用于以下工作流程

  1. 在每月结束时,使用您的在线银行服务以ofxstatement所知的格式导出所有银行账户的账单。

  2. 对每个导出的文件运行ofxstatement以将其转换为OFX。Shell脚本或Makefile可以帮助自动化此过程。

  3. 将生成的OFX文件导入到您的个人会计系统中。

安装和使用

在使用ofxstatement之前,您必须为您的银行安装一个插件(或编写自己的插件)!插件作为常规Python eggs安装,例如使用easy_install或pip:

$ pip3 install ofxstatement-lithuanian

请注意,这种方式将自动安装ofxstatement本身。安装后,ofxstatement实用程序将可用。

UbuntuDebian操作系统的用户可以从官方软件仓库安装ofxstatement:

$ apt install ofxstatement ofxstatement-plugins

您可以通过运行以下命令来检查ofxstatement是否正常工作:

$ ofxstatement list-plugins

您应该得到一个已安装插件的列表。

安装后,使用很简单:

$ ofxstatement convert -t bank_statement.csv statement.ofx

生成的 statement.ofx 已准备好导入个人会计系统。

开发/测试

ofxstatement 使用 pipenv 来管理开发环境和依赖项:

$ pip install pipenv $ git clone https://github.com/<your_account>/ofxstatement.git $ cd ofxstatement $ pipenv sync --dev

.. _pipenv: https://github.com/pypa/pipenv

最后运行测试套件:

$ pipenv shell $ pytest

当您满意后,您可以创建一个拉取请求。

已知插件

有几个用户开发的插件可用

================================= ============================================ 插件描述 ================================= ============================================ ofxstatement-lithuanian 插件,适用于在立陶宛运营的几家银行:Swedbank,Danske以及通用的立陶宛交换格式 - LITAS-ESIS。

ofxstatement-czech 插件,适用于 Poštovní spořitelna(maxibps)和采用 GPC 格式的银行(例如,FIO banka,模块 gpc)。

ofxstatement-airbankcz 插件,适用于 Air Bank a.s.(捷克共和国)ofxstatement-raiffeisencz 插件,适用于 Raiffeisenbank a.s.(捷克共和国)ofxstatement-unicreditcz 插件,适用于 UniCredit Bank Czech Republic and Slovakia ofxstatement-equabankcz 插件,适用于 Equa Bank a.s.(捷克共和国)ofxstatement-cz-komercni Komerční banka(捷克共和国)ofxstatement-mbankcz mBank S.A.(捷克共和国)ofxstatement-otp 插件,适用于在匈牙利运营的 OTP Bank ofxstatement-bubbas 由 @bubbas 开发的一系列插件:dkb_cclbbamazon

banking.statements.osuuspankki - 芬兰Osuuspankki银行 banking.statements.nordea - Nordea银行(至少芬兰分支机构) ofxstatement-germany - 多家德国银行(目前包括1822direkt和Postbank)的插件 ofxstatement-austrian - 在奥地利运营的几家银行的插件:Easybank、ING-Diba、Livebank、Raiffeisenbank。 ofxstatement-postfinance - 瑞士PostFinance(基于Java文本的银行/信用卡对账单)。 ofxstatement-mbank-sk - MBank.sk ofxstatement-be-belfius - Belfius(比利时) ofxstatement-be-keytrade - KeytradeBank(比利时) ofxstatement-be-ing - ING(比利时) ofxstatement-be-kbc - KBC(比利时) ofxstatement-be-argenta - Argenta(比利时) ofxstatement-be-crelan - Crelan(比利时) ofxstatement-be-triodos - 比利时Triodos Bank CSV对账单 ofxstatement-be-newb - 比利时合作银行newB ofxstatement-betterment - Betterment(《https://www.betterment.com/》) ofxstatement-simple - Simple(银行,《https://www.simple.com/》) JSON财务报表格式 ofxstatement-latvian - 拉脱维亚银行 ofxstatement-iso20022 - 支持通用的ISO-20022格式 ofxstatement-seb - SEB(瑞典),它解析私人账户的Export.xlsx ofxstatement-ee-seb - SEB(爱沙尼亚),解析专有CSV文件 ofxstatement-paypal - PayPal,它解析私人账户的*.csv ofxstatement-polish - 支持一些波兰银行和金融机构 ofxstatement-russian - 支持多家俄罗斯银行:Avangard、AlfaBank、Tinkoff、SberBank(借记卡和csv)、VTB。 ofxstatement-dab - DAB Bank(德国) ofxstatement-consors - Consorsbank(德国) ofxstatement-is-arionbanki - 冰岛Arion银行 ofxstatement-de-triodos - 德国Triodos Bank CSV对账单(也适用于GLS Bank) ofxstatement-lansforsakringar - Länsförsäkringar(瑞典),它解析私人账户的Kontoutdrag.xls ofxstatement-revolut - Revolut Mastercard ofxstatement-transferwise - Transferwise CSV ofxstatement-n26 - N26银行 ofxstatement-sp-freiburg - Sparkasse Freiburg-Nördlicher Breisgau(德国) ofxstatement-al_bank - Arbejdernes Landsbank(丹麦) ofxstatement-fineco - FinecoBank(意大利) ofxstatement-intesasp - Intesa San Paolo(xlsx余额文件) ofxstatement-de-ing - Ing Diba Bank(德国) ofxstatement-us-first-republic - First Republic Bank(美国) ofxstatement-cd-tmb - Trust Merchant Bank(刚果民主共和国) ofxstatement-zm-stanbic - Stanbic Bank(赞比亚) ofxstatement-dutch - 荷兰金融机构,如ICSCards和ING ofxstatement-french - 法国金融机构,如BanquePopulaire ofxstatement-mt940 - 提供Swift MT940报表的所有金融机构 ofxstatement-it-banks - Widiba和Webank意大利银行 ofxstatement-chebanca - CheBanca!意大利银行(xlsx格式) ================================= ============================================

.. _ofxstatement-lithuanian: https://github.com/kedder/ofxstatement-lithuanian .. _ofxstatement-czech: https://gitlab.com/mcepl/ofxstatement-czech .. _ofxstatement-airbankcz: https://github.com/milankni/ofxstatement-airbankcz .. _ofxstatement-raiffeisencz: https://github.com/milankni/ofxstatement-raiffeisencz .. _ofxstatement-unicreditcz: https://github.com/milankni/ofxstatement-unicreditcz .. _ofxstatement-equabankcz: https://github.com/kosciCZ/ofxstatement-equabankcz .. _ofxstatement-mbankcz: https://github.com/SinyaWeo/ofxstatement-mbankcz .. _ofxstatement-otp: https://github.com/abesto/ofxstatement-otp .. _ofxstatement-bubbas: https://github.com/bubbas/ofxstatement-bubbas .. _banking.statements.osuuspankki: https://github.com/koodaamo/banking.statements.osuuspankki .. _banking.statements.nordea: https://github.com/koodaamo/banking.statements.nordea .. _ofxstatement-germany: https://github.com/MirkoDziadzka/ofxstatement-germany .. _ofxstatement-austrian: https://github.com/nblock/ofxstatement-austrian .. _ofxstatement-postfinance: https://pypi.python.org/pypi/ofxstatement-postfinance .. _ofxstatement-mbank-sk: https://github.com/epitheton/ofxstatement-mbank-sk .. _ofxstatement-be-belfius: https://github.com/renardeau/ofxstatement-be-belfius .. _ofxstatement-be-keytrade: https://github.com/Scotchy49/ofxstatement-be-keytrade .. _ofxstatement-be-ing: https://github.com/jbbandos/ofxstatement-be-ing .. _ofxstatement-be-kbc: https://github.com/plenaerts/ofxstatement-be-kbc .. _ofxstatement-be-argenta: https://github.com/woutbr/ofxstatement-be-argenta .. _ofxstatement-be-crelan: https://gitlab.com/MagnificentMoustache/ofxstatement-be.crelan .. _ofxstatement-be-newb: https://github.com/SDaron/ofxstatement-be-newb .. _ofxstatement-betterment: https://github.com/cmayes/ofxstatement-betterment .. _ofxstatement-simple: https://github.com/cmayes/ofxstatement-simple .. _ofxstatement-latvian: https://github.com/gintsmurans/ofxstatement-latvian .. _ofxstatement-iso20022: https://github.com/kedder/ofxstatement-iso20022 .. _ofxstatement-seb: https://github.com/gerasiov/ofxstatement-seb .. _ofxstatement-paypal: https://github.com/gerasiov/ofxstatement-paypal .. _ofxstatement-polish: https://github.com/yay6/ofxstatement-polish .. _ofxstatement-russian: https://github.com/gerasiov/ofxstatement-russian .. _ofxstatement-dab: https://github.com/JohannesKlug/ofxstatement-dab .. _ofxstatement-consors: https://github.com/JohannesKlug/ofxstatement-consors .. _ofxstatement-is-arionbanki: https://github.com/Dagur/ofxstatement-is-arionbanki .. _ofxstatement-be-triodos: https://github.com/renardeau/ofxstatement-be-triodos .. _ofxstatement-de-triodos: https://github.com/pianoslum/ofxstatement-de-triodos .. _ofxstatement-lansforsakringar: https://github.com/lbschenkel/ofxstatement-lansforsakringar .. _ofxstatement-revolut: https://github.com/mlaitinen/ofxstatement-revolut .. _ofxstatement-transferwise: https://github.com/kedder/ofxstatement-transferwise .. _ofxstatement-n26: https://github.com/3v1n0/ofxstatement-n26 .. _ofxstatement-sp-freiburg: https://github.com/omarkohl/ofxstatement-sparkasse-freiburg .. _ofxstatement-al_bank: https://github.com/lbschenkel/ofxstatement-al_bank .. _ofxstatement-fineco: https://github.com/frankIT/ofxstatement-fineco .. _ofxstatement-intesasp: https://github.com/Jacotsu/ofxstatement-intesasp .. _ofxstatement-de-ing: https://github.com/fabolhak/ofxstatement-de-ing .. _ofxstatement-germany: https://github.com/MirkoDziadzka/ofxstatement-germany .. _ofxstatement-us-first-republic: https://github.com/medovina/ofxstatement-us-first-republic .. _ofxstatement-cz-komercni: https://github.com/medovina/ofxstatement-cz-komercni .. _ofxstatement-cd-tmb: https://github.com/BIZ4Africa/ofxstatement-cd-tmb .. _ofxstatement-zm-stanbic: https://github.com/BIZ4Africa/ofxstatement-zm-stanbic .. _ofxstatement-dutch: https://github.com/gpaulissen/ofxstatement-dutch .. _ofxstatement-french: https://github.com/gpaulissen/ofxstatement-french .. _ofxstatement-mt940: https://github.com/gpaulissen/ofxstatement-mt940 .. _ofxstatement-it-banks: https://github.com/ecorini/ofxstatement-it-banks .. _ofxstatement-ee-seb: https://github.com/rsi2m/ofxstatement-ee-seb .. _ofxstatement-chebanca: https://github.com/3v1n0/ofxstatement-chebanca Advanced Configuration

虽然ofxstatement可以在不进行任何配置的情况下使用,但某些插件可能接受额外的配置参数。这些参数可以在配置文件中指定。配置文件可以使用edit-config命令进行编辑,该命令以环境变量EDITOR定义的编辑器(否则为平台默认)打开配置文件:

$ ofxstatement edit-config

配置文件格式为标准.ini格式。配置被分为与--type命令行参数对应的节。每个节必须提供一个指向已注册的转换插件的plugin选项。其他参数是插件特定的。

一个示例配置文件:

[swedbank]
plugin = swedbank

[danske:usd]
plugin = litas-esis
charset = cp1257
currency = USD
account = LT123456789012345678

这样的配置将使ofxstatement知道由插件swedbanklitas-esis处理的两种报表文件格式。litas-esis插件将使用cp1257字符集加载报表,并设置自定义货币和账户号码。这样,GnuCash将自动将生成的.ofx文件与特定的GnuCash账户相关联。

要将专有CSV文件danske.csv转换为OFX文件danske.ofx,请执行:

$ ofxstatement -t danske:usd danske.csv danske.ofx

请注意,配置参数是插件特定的。请参阅插件文档以获取更多信息。

要使用自定义配置文件,请传递-c / --config选项:

$ ofxstatement convert -t pluginname -c /path/to/myconfig.ini input.csv output.ofx

编写自己的插件

如果您的银行尚未开发插件(请参阅上文中的 已知插件 部分),您可以轻松编写自己的插件,前提是您对 Python 编程语言有一些了解。有一个 ofxstatement-sample 插件项目可供使用,它提供了示例样板代码,并详细描述了插件开发过程。

.. _ofxstatement-sample: https://github.com/kedder/ofxstatement-sample

项目详情


下载文件

下载您平台对应的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源代码分发

ofxstatement-0.9.1.tar.gz (42.0 kB 查看哈希值)

上传时间 源代码

构建分发

ofxstatement-0.9.1-py3-none-any.whl (40.5 kB 查看哈希值)

上传时间 Python 3

支持