我正在寻找一种从Angularjs中的NVd3导出Excel图表的方法。
我正在尝试这样的代码(jsfiddle)
<button id="myButtonControlID">Export Table data into Excel</button>
<div id="divTableDataHolder">
<table>
<tbody>
<tr>
<td><img src='http://codepattern.net/Blog/pics/CodepatternLogoN.png' alt=''/></td>
</tr>
<tr>
<td><img id="img" src='' alt=''/></td>
</tr>
</tbody>
</table>
</div>
$("[id$=myButtonControlID]").click(function(e) {
window.open('data:application/vnd.ms-excel,' + encodeURIComponent( $('div[id$=divTableDataHolder]').html()));
e.preventDefault();
});
document.getElementById("img").src ="data:image/png;base64,..."
最佳答案
Excel似乎不喜欢base64编码的图像...
尝试使用当前失败镜像的PNG base64编码数据向服务器发出ajax POST请求,进入存储镜像并为其提供托管的服务,一些示例php代码(我假设您可以访问linux服务器可以运行php):
<?php
$somecode = unique_name(); //left as excersise for the reader.
move_uploaded_file($_FILES["filename"]["tmp_name"],"destination_$somecode.png");
//also, check for errors.
echo $somecode;
然后,只需将服务器的响应用作excel文件中的URL。
这样,您可以嵌入指向图像的链接,而不是图像本身。
所以单元格内容可能类似于:
<td><img src='yourhost.com/your_image_location' /></td>
较小的excel文件应该会让人们高兴,但是
您将不得不考虑诸如文件在此处保存多长时间的问题。
考虑包括用于生成表单的实际数据,以便将来的excel用户可以在图像服务器出现故障或图像“过期”时廉价地重建图形。
我希望这有帮助!
关于javascript - 如何将base64图像导出到excel?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46319088/