从gnucash到xlsx文件的报告
gnucashreport的Python项目详细描述
用于从GnuCash到xlsx文件获取报告的python库。
它直接连接到gnucash书籍(xml或sql)和Pandas用于构建报告。 无需计算周期,错误更少,代码更少。
库是跨平台的,不需要excel,您可以使用libreoffice/openoffice
gnucash python绑定不使用,因为它依赖于平台并且不稳定。 所有来自gnucash的数据按原样加载到dataframes中,表到表。然后数据只通过熊猫进行处理。
安装
安装Python版本3(版本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_lock | Open 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 | ||
---|---|---|
0 | 1 | 2 |
Assets: | Current assets: | Cash |
Assets: | Current assets: | Card |
Assets: | Reserve: | Deposite |
Assets: | Reserve: | Cash |
示例1:
glevel=[0, 1]
将0和1级别的帐户分组为2行2列(多索引数据帧):
0 | 1 |
---|---|
Assets | Current 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图书文件