大量excel(在计算方面)生成要自动发布的图形数据

时间:2014-07-05 06:53:33

标签: xml excel graph google-sheets

我有一个很大的excel文件,可以产生很多计算。

结果用于产生~20'复杂'图表

我希望这些图表能够在joomla网站上发布,我想让我们在刷新工作簿时“瞬间”刷新(或者稍微延迟)

我目前使用的是什么:

  • windows 7

  • excel 2013

  • joomla 3.2.2托管于OVH

我现在尝试了什么

  • 我的第一个想法是将我的Excel保存为谷歌电子表格(在谷歌驱动器上),并从他们可发布的图表中受益。它工作正常,但由于我的工作簿中有很多计算,刷新谷歌电子表格(实际上)太慢了 - >所以这不是一个选择..

  • 我的第二个想法是保留我的Excel并在同一个excel文件中的专用工作表中准备图形所需的数据(*)。然后使用ftp并将此范围传输到xml文件

(*)数据具有以下列结构

  • GraphId
  • Id
  • 输入
  • 角色
  • 变量
  • SubVariable
  • M1(第一个月)
  • M2(第二个月)
  • ...
  • M36(第36个月)

然后xml具有以下结构

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<dataset>
<record>
<GraphId>GraphId</GraphId>
<Id>Id</Id>
<Type>Type</Type>
<Role>Role</Role>
<Variable>Variable</Variable>
<SubVariable>SubVariable</SubVariable>
<m1>m1</m1>
<m2>m2</m2>
<m3>m3</m3>
<m4>m4</m4>
<m5>m5</m5>
<m6>m6</m6>
<m7>m7</m7>
<m8>m8</m8>
<m9>m9</m9>
<m10>m10</m10>
<m11>m11</m11>
<m12>m12</m12>
<m13>m13</m13>
<m14>m14</m14>
<m15>m15</m15>
<m16>m16</m16>
<m17>m17</m17>
<m18>m18</m18>
<m19>m19</m19>
<m20>m20</m20>
<m21>m21</m21>
<m22>m22</m22>
<m23>m23</m23>
<m24>m24</m24>
<m25>m25</m25>
<m26>m26</m26>
<m27>m27</m27>
<m28>m28</m28>
<m29>m29</m29>
<m30>m30</m30>
<m31>m31</m31>
<m32>m32</m32>
<m33>m33</m33>
<m34>m34</m34>
<m35>m35</m35>
<m36>m36</m36>
</record>

我将此xml文件传输到我的网站,以便可以通过网址http://&lt; mywebsite&gt; /tmp/file.xml

然后在另一个谷歌电子表格(除了我之前提到的那个)之外,我使用了IMPORTXML功能

= IMPORTXML(http://&lt; mywebsite&gt; /tmp/file.xml,"// dataset // record //“)

它也很好(:-))意味着我在google spreadhseet中获取了我的x​​ml文件的内容。所以我可以创建我的图表并发布它们...... 但是当我刷新我的excel工作簿时它不会自动刷新(我创建了一个VBA宏,当我刷新我的excel workboook时会自动将我的xml文件放到我的网站上) 因为谷歌电子表格中的IMPORTXML功能仅在一(或两)小时间隔刷新...

我已经阅读了很多关于在旧的谷歌电子表格中添加googleclock()函数,但我正在使用新的谷歌电子表格

到目前为止我发现刷新importxml函数的方法是删除url的最后一个字符然后提交然后重新输入最后一个字符然后重新提交..不是那个自动的...... :-(

欢迎任何有价值的想法。

修改

最后,我通过在google spreadhsheet中输入新的Google表单找到了答案

我添加了一个文本输入表单,其中应包含我的xml文件的名称

然后在这里使用信息 http://justingale.com/2013/09/url-tricks-for-google-forms-pre-populate-and-automatically-submitting-responses/

并添加一些VBA代码

Dim httpRequest As XMLHTTP
Set httpRequest = New XMLHTTP


httpRequest.Open "POST", "https://docs.google.com/forms/d/<yourFormKey>/formResponse?ifq", False
httpRequest.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
httpRequest.send "entry.<yourEntryKey>=<yourValue>&submit=Submit"

'Check result in the following vars
a = httpRequest.Status
b = httpRequest.statusText

其中

  • &LT; yourFormKey&gt;是谷歌形式的关键(你可以找到它 表格的网址

  • &LT; yourEntryKey&gt;可以通过查看源代码找到 表格(在源代码中找到“entry。”)

  • &LT; yourvalue&gt;是您要在Google表单中推送的值

然后,当导出xml文件中的数据并执行这段代码时,附加到谷歌电子表格的谷歌表格将包含文件名称的最后一个记录

然后你可以执行以下公式来检索它

=index('Form Responses 5'!B:B,match(max('Form Responses 5'!A:A),'Form Responses 5'!A:A,0))

,其中   - “表单响应5”是包含表单结果

的表单的名称(单引号之间)

然后输入以下公式

=IMPORTXML("http://< mywebsite >/tmp/"& index('Form Responses 5'!B:B,match(max('Form Responses 5'!A:A),'Form Responses 5'!A:A,0)), "//dataset//record//")

我自动刷新数据: - )

0 个答案:

没有答案