使用angularjs将html表导出到Google Spreadsheets

时间:2015-05-30 09:41:23

标签: angularjs node.js google-drive-api google-sheets google-docs

我创建了一个使用angularjs和node管理库存的应用程序。 现在我想将导出功能添加到特定屏幕。 我宁愿将数据导出到新的Google电子表格(而不是微软Excel),但我找不到办法做到这一点......

我将我的数据转换为一个简单的html表,我已经管理下载了它的xls文件,但它有很多问题(编码,在单元格中显示图像等)所以我真的宁愿将它导出到Google电子表格。

有没有人知道将html表导出到Google电子表格的简单方法?我拒绝相信这是不可能的......

由于

4 个答案:

答案 0 :(得分:2)

最后,我找到了一个围绕这个问题的简单(实际上非​​常有效)的解决方案。

我正在使用ZeroClipboard将表格复制到用户的剪贴板中,然后我正在打开一个新的Google Speardsheet。用户需要做的就是单击Ctrl-V并粘贴表格。

以下是代码:

HTML

<a ng-repeat="exportBtn in exportTables" class="btn btn-default" href="" clip-copy="getHtmlToCopy(exportBtn.target)" clip-copy-mime-type="text/plain">Copy {{exportBtn.name}} </a> <a class="btn btn-default" ng-href="http://spreadsheets.google.com/ccc?new&hl=he" target="_blank">open a new Google Spreadsheet</a>

JS

 $rootScope.getHtmlToCopy = function (target) {
        var copyConst = {rowSeperator: "\r\n", colSeperator: "\t"}

        function $chk(obj) {
          return !!(obj || obj === 0)
        }

        var TableUtil = {
          nodeToString: function (table, rowSeperator, colSeperator) {
            var d = "";
            if (table.childNodes.length) {
              if ("TD" == table.nodeName || "TH" == table.nodeName)colSeperator = rowSeperator = "";
              for (table = table.firstChild; table;) {
                d += TableUtil.nodeToString(table, rowSeperator, colSeperator);
                if ("TR" == table.nodeName)d += rowSeperator; else if ("TD" == table.nodeName || "TH" == table.nodeName)d += colSeperator;
                table = table.nextSibling
              }
            } else"#text" == table.nodeName && $chk(table.nodeValue) && "" !== table.nodeValue && (rowSeperator = table.nodeValue, colSeperator = RegExp("\\t", "g"), rowSeperator = rowSeperator.replace(RegExp("\\n", "g"), ""), rowSeperator = rowSeperator.replace(colSeperator, ""), d += rowSeperator.trim());
            return d
          }
        }

        var res = TableUtil.nodeToString($('table#' + target)[0], copyConst.rowSeperator, copyConst.colSeperator)

        console.log('got html to copy', res);

        //the following line might cause a popup blocker to stop the new tab. you can show a button after the copy is finished that will open a new tab
        window.open("http://spreadsheets.google.com/ccc?new");

        return (res);
      }

它很难看,但它完美运作!

答案 1 :(得分:0)

excel使用OOXML格式。那里有很多细节。基本上,它是一个多个xml和xsl文件的zip文件。但是,Google电子表格没有很多公开规范。

我建议您先从OOXML开始

答案 2 :(得分:0)

答案 3 :(得分:0)

使用

=ImportHtml(URL, "table", num) 

将任何html表导入google电子表格

这里的简单指南https://eagereyes.org/data/scrape-tables-using-google-docs