繁体   English   中英

如何在 excel 中导出图表?

[英]how to export chart in an excel?

我正在尝试将从数据库中获取的数据显示为条形图,然后将数据与图表图像一起导出到 excel。我可以成功显示条形图,但我无法将数据与图表一起导出到 excel。

有什么方法可以通过单击按钮将数据和图表导出到 excel 中?

这是我的 javascript 代码

var fetcheddata = '';
var proddata = '';
$( document ).ready(function (){
    $('#chart-container-1').hide();
     $('#chart-container').show();
     $.ajax({
        url:"index.php?r=jobready/get-data",
        method: "POST",
        success: function (data) {
                fetcheddata = data;
                console.log(data);
                var data_e = JSON.parse(fetcheddata);
                console.log(data_e);
                var rating = [];
                var variety = [];
                var quality = [];

                for (var i in data_e) {
                    rating.push(data_e[i].ratingid);
                    variety.push(data_e[i].variety);
                    quality.push(data_e[i].quality);
            }
            console.log("Rating:" +rating);
            console.log("Variety:" +variety);
            console.log("Quality:" +quality);

           var chartdata = {
                labels: rating,
                datasets: [{
                        label: 'Variety',
                        backgroundColor: 'rgb(255, 0, 0)',
                        borderColor: 'rgba(200, 200, 200, 0.75)',
                        hoverBackgroundColor: 'rgba(200, 200, 200, 1)',
                        hoverBorderColor: 'rgba(200, 200, 200, 1)',
                        data: variety
                    },
                    {
                        label: 'Quality',
                        backgroundColor: 'rgb(0, 0, 255)',
                        borderColor: 'rgba(200, 200, 200, 0.75)',
                        hoverBackgroundColor: 'rgba(200, 200, 200, 1)',
                        hoverBorderColor: 'rgba(200, 200, 200, 1)',
                        data: quality
                    }
                ]
            };

            var ctx = $("#mycanvas");

            var barGraph = new Chart(ctx, {
                type: 'bar',
                data: chartdata,
                options: {
                    barValueSpacing: 20,
                    title: {
                        display: true,
                        text: 'Variety',
                        fontSize: 20
                    },
                    scales: {
                        xAxes: [{
                            scaleLabel: {
                                display: true,
                                labelString: 'Product Id'
                            }
                        }],
                        yAxes: [{
                            scaleLabel: {
                                display: true,
                                labelString: 'Amount'
                            },
                            ticks: {
                                beginAtZero: true
                            }
                        }]

                    }
                }
            });
        },
        error: function (data) {
            console.log(data);
        }
    });

    document.getElementById('download-pdf').addEventListener("click", downloadPDF);   
    $("#download-xls").click(function (e) {

});
    $('#product_sales').on("click",function(){
        $('#chart-container-1').show();
        $('#chart-container').hide();
        $.ajax({
        url:"index.php?r=jobready/get-product-data",
        method: "POST",
        success: function (data) {
                proddata = data;
                console.log(data);
                var data_e = JSON.parse(proddata);
                console.log(data_e);
                var flavour = [];
                var munch = [];
                var perk = [];
                var snickers = [];

                for (var i in data_e) {
                    flavour.push(data_e[i].flavour);
                    munch.push(data_e[i].munch);
                    perk.push(data_e[i].perk);
                    snickers.push(data_e[i].snickers);
            }
            console.log("flavour:" +flavour);
            console.log("munch:" +munch);
            console.log("perk:" +perk);
            console.log("snickers:" +snickers);

           var chartdata = {
                labels: flavour,
                datasets: [{
                        label: 'Munch',
                        backgroundColor: 'rgb(255, 0, 0)',
                        borderColor: 'rgba(200, 200, 200, 0.75)',
                        hoverBackgroundColor: 'rgba(200, 200, 200, 1)',
                        hoverBorderColor: 'rgba(200, 200, 200, 1)',
                        data: munch
                    },
                    {
                        label: 'Perk',
                        backgroundColor: 'rgb(0, 0, 255)',
                        borderColor: 'rgba(200, 200, 200, 0.75)',
                        hoverBackgroundColor: 'rgba(200, 200, 200, 1)',
                        hoverBorderColor: 'rgba(200, 200, 200, 1)',
                        data: perk
                    },
                    {
                        label: 'Snickers',
                        backgroundColor: 'rgb(0, 255, 0)',
                        borderColor: 'rgba(200, 200, 200, 0.75)',
                        hoverBackgroundColor: 'rgba(200, 200, 200, 1)',
                        hoverBorderColor: 'rgba(200, 200, 200, 1)',
                        data: snickers
                    }
                ]
            };

            var ctx = $("#mycanvas_1");

            var barGraph1 = new Chart(ctx, {
                type: 'bar',
                data: chartdata,
                options: {
                    barValueSpacing: 20,
                    title: {
                        display: true,
                        text: 'Products',
                        fontSize: 20
                    },
                    scales: {
                        xAxes: [{
                            scaleLabel: {
                                display: true,
                                labelString: 'Flavour'
                            }
                        }],
                        yAxes: [{
                            scaleLabel: {
                                display: true,
                                labelString: 'Sales'
                            },
                            ticks: {
                                beginAtZero: true,
                                max: 700,
                                min: 0
                            }
                        }]

                    }
                }
            });
        },
        error: function (data) {
            console.log(data);
        }
    });
    });
});
function downloadPDF() {
        var canvas = document.querySelector('#mycanvas');
    //creates image
    var canvasImg = canvas.toDataURL("image/jpeg", 1.0);

    //creates PDF from img
    var doc = new jsPDF('landscape');
    doc.setFontSize(20);
    doc.text(15, 15, "Cool Chart");
    doc.addImage(canvasImg, 'JPEG', 10, 10, 280, 150 );
    doc.save('canvas.pdf');
}

我被卡在点击下载-xls jquery function。

所以,出于好奇,我只是看看你是否真的可以在前端从纯数据创建一个 excel 文件,令我惊讶的是,这就是我得到的。

有一篇关于代码项目的文章可以做到这一点。 我已将链接发布如下 - https://www.codeproject.com/Articles/1197349/Excel-Files-in-JavaScript-the-Simple-Way 您可以查看那里以获取更多详细信息。

希望这对您有所帮助。 但我仍然敦促您考虑在后端生成文件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM