我创建了一个使用angularjs和node管理库存的应用程序。 现在我想将导出功能添加到特定屏幕。 我宁愿将数据导出到新的Google电子表格(而不是微软Excel),但我找不到办法做到这一点......
我将我的数据转换为一个简单的html表,我已经管理下载了它的xls文件,但它有很多问题(编码,在单元格中显示图像等)所以我真的宁愿将它导出到Google电子表格。
有没有人知道将html表导出到Google电子表格的简单方法?我拒绝相信这是不可能的......
由于
答案 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)
将数据导入Google电子表格的最简单方法是将其保存为CSV格式,然后将其上传到Google云端硬盘,并指定convert = true。见https://www.google.co.uk/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&uact=8&ved=0CCEQFjAA&url=https%3A%2F%2Fsupport.google.com%2Fdocs%2Fanswer%2F40608%3Fhl%3Den&ei=mTprVYalNoPbsATm4IDQDA&usg=AFQjCNGKRxQaUQ5xQnkQRHIq5cd2YQn7ZA&sig2=vuJhRhgHp1FhwX8X0teMJw&bvm=bv.94455598,d.ZGU
答案 3 :(得分:0)
使用
=ImportHtml(URL, "table", num)
将任何html表导入google电子表格
这里的简单指南https://eagereyes.org/data/scrape-tables-using-google-docs