在Linux中从Excel数据透视表电子表格中提取数据

我有一个基于数据透视表的Excel电子表格,它定期更新(每月)并上传到我的服务器(由一个非常犹豫改变输出内容的组所产生)。 我想能够编写一个脚本,我可以运行通过cron作业来处理和加载数据透视表的原始数据到我的数据库。

但是,我无法弄清楚如何在不手动进入windows的情况下获取底层数据,在excel中打开文件,双击总计单元格,获得一个包含所有填充该单元格的原始数据的表单,并将该表保存为csv,然后可以通过某种语言(我的情况python)加载到我的数据库。 看起来他们应该是一些脚本化的方式来提取基础数据。

我只有linux机器(在虚拟机上运行windows / office;但我更喜欢不涉及windows的解决scheme)。 我熟悉像xls2csv(不访问原始数据)的工具,并使用像python-unoconv这样的工具来编辑来自python的openoffice文档。 但是,即使手动使用OpenOffice,我也没有办法获取底层数据。

编辑:花了好几个小时没有取得任何进展(发布之前),我没有开始做一些通过unconv转换为ODS,可能会用python-odf来提取最后一个表(称为“DPCache”)。

所以现在的问题是把ODS中的表格转换成CSV格式; 这对我来说不应该太难(尽pipe非常感谢帮助)。

你有没有试过xlrd ? 另请参阅python-excel网站上的教程。

这很简单:

>>> import xlrd >>> book = xlrd.open_workbook('pivot_table_demo.xls') >>> sheet = book.sheet_by_name('Summary') >>> for row_index in xrange(sheet.nrows): ... print sheet.row_values(row_index) ... [u'Sum of sales', u'qtr', '', '', '', ''] [u'person', 1.0, 2.0, 3.0, 4.0, u'Grand Total'] [u'dick', 100.0, 99.0, 95.0, 90.0, 384.0] [u'harriet', 100.0, 110.0, 121.0, 133.1, 464.1] [u'tom', 100.0, 101.0, 102.0, 103.0, 406.0] [u'Grand Total', 300.0, 310.0, 318.0, 326.1, 1254.1] >>>