从gnucash到xlsx文件的报告

gnucashreport的Python项目详细描述


用于从GnuCash到xlsx文件获取报告的python库。

它直接连接到gnucash书籍(xml或sql)和Pandas用于构建报告。 无需计算周期,错误更少,代码更少。

库是跨平台的,不需要excel,您可以使用libreoffice/openoffice

gnucash python绑定不使用,因为它依赖于平台并且不稳定。 所有来自gnucash的数据按原样加载到dataframes中,表到表。然后数据只通过熊猫进行处理。

安装

  1. 安装Python版本3(版本2应该可以,但我还没有测试)

  2. 安装gnucashreport:

    pip install gnucashreport
    

现在,您可以使用cli工具gcreport

[1]Pandas need install before, because numpy have installation thru install_requires directive issue

简单的命令行工具

库包含简单的cli工具,用法:

gcreport gnucash_file xlsx_file [--glevel glevel] [--open_if_lock]
gnucash_文件
您的gnucash数据库文件
xlsx_文件
保存报表的xlsx文件的路径
--glevel glevel
Level to group accounts, may be multiple (–glevel 0 –glevel 1)
--open_if_lockOpen sqlite base even if opened other user

它将所有报表保存到excel文件。(作为所有Excel报表功能)

示例

>>> import gnucashreport
>>> gcrep = GCReport()

打开gnucash book(sql或xml)

>>> gcrep.open_book_file('v:/gnucash-base/sqlite/GnuCash-base.gnucash', open_if_lock=True)

将所有拆分保存到Excel(包括帐户名、说明、货币助记符和其他)

>>> from gnucashreport.utils import dataframe_to_excel
>>> dataframe_to_excel(gcrep.df_splits, 'v:/tables/splits.xlsx')

将复杂报表保存在xlsx文件中:

此报告包含:

  • 每年按月计算的收入、费用、利润、资产、贷款、权益(每年的表)
  • 每年全年的收入、费用、利润、资产、贷款、权益
  • 个人通货膨胀(年度支出增长)
  • 资产回报率
  • 一些图表
>>> gcrep.all_reports_excel('v:/tables/ex-test.xlsx', glevel=1)

资产回报率

这个选项是实验性的。写了一些测试。但这似乎是事实:)

图书馆可能会考虑账户的盈利能力,同时考虑到层次结构。 任何资产账户:存款、负债、银行,而不仅仅是股票。您可以计算所有时间或指定期间的收益率。 您可以计算股票或所有资产的投资组合回报。

你应该在收入和费用帐户上作记号以计算收益。 在帐户备注中设置%invest%。然后,在计算盈利能力时将考虑该账户及其后代。 如果您在Notes中标记帐户%no_invest%,则在计算收益率时将不考虑该帐户及其子帐户

# open gnucash bookimportgnucashreportgcrep=GCReport()gcrep.open_book_file(your_gnucash_file)# Get return on assetsgcrep.returns_report_excel('returns.xlsx')

启动命令行工具后,请参见.xlsx文件中的“return”页

所有结果以每年百分比显示:

总计
考虑到成本的总资产回报率
资金流
来自账户的盈利能力资金流。股息、其他账户利息等
费用
为账户提供服务的成本(每年)
资本
资本利得

解释glevel

glevel-如何按级别分组帐户:级别数组或单个int级别

示例:

帐户结构:

account levels
012
Assets:Current assets:Cash
Assets:Current assets:Card
Assets:Reserve:Deposite
Assets:Reserve:Cash

示例1:

glevel=[0, 1]

将0和1级别的帐户分组为2行2列(多索引数据帧):

01
AssetsCurrent assets
Reserve

例2:

glevel=1

仅将一个级别分组为两行一列:

1
Current assets
Reserve

测试

我所有的测试数据都是真实的。然后所有测试函数都使用外部文件夹。 要创建测试数据,请将sql book文件和xml book文件保存到任何文件夹中。对sql和xml使用相同的数据。 为测试数据创建空文件夹。 在src/test/basetest.py中设置此选项

bookfile_sql=your_sql_basebookfile_xml=your_xml_basedir_testdata=folder_for_test_data

运行脚本src/test/savetestdata.py。只在工作提交版本上运行!

现在您可以运行测试。

setup.py test

盈利能力测试在测试/DATAB/XRES-TEST.GNUCASH

中使用特殊的GNUCASH图书文件

许可证

GNU GPL 3

作者

党派

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java编辑并重新运行spring引导单元测试,无需重新加载上下文即可加快测试速度   为什么我不能做演员?   java为什么是线程。join通常用于停止安卓中的线程   java从weblogic服务器调用JSON POST REST服务时收到400:错误请求   java在DeviceAdmin模式禁用时设置身份验证?   java SortedMap的keySet()能否始终安全地强制转换到SortedSet?   安卓 java。lang.NoSuchMethodException可包裹类   java JOGL库安装   javatomcat内存管理   java使用getString()中的变量   java将最小星号设置为评级栏   Java中字符串相等的println()方法。。。它到底是如何工作的?   java如何从文本中输出的数组中放入随机图像