我正在寻找一种从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/

10-09 17:55
查看更多