如何使用DataTable制作Excel报告?

时间:2018-08-01 04:41:57

标签: javascript jquery asp.net datatable

在我的项目中,我从数据库中获取数据并将其存储在数据中。我想从数据表中使用FileExport DataTable将数据导出到Excel,但是Excel结果报告与数据表中的数据相同。

我将以下代码用于实施数据表:

$('#grid').DataTable({
                ajax: {
                    url: '@Url.Action("Binding", "ETCPSummaryReport")',
                    data: {
                        SCode : spesial,
                        divisioncode: $("#Division").val(),

                    },
                },
                searching: false,
                destroy: true,
                bPaginate: true,
                bLengthChange: false,
                bFilter: false,
                bInfo: false,
                bSort: false,
                responsive: true,
                bServerSide: true,
                bProcessing: true,
                dom: 'Bfrtip',
                buttons: [
                {
                    extend: 'excelHtml5',
                    title: 'Data export'
                }
                ],
                columns: [
                    { "title": "Name" },
                    { "title": "PAR" },
                    { "title": "Total" },
                    { "title": "TotalETCPPSR" },

                ],
                columnDefs: [
                    { visible: false, targets: 0 }
                ],
                order: [[0, 'asc']],
                displayLength: 25,
                drawCallback: function (settings) {
                    var api = this.api();
                    var rows = api.rows({ page: 'current' }).nodes();
                    var last = null;

                    api.column(0, { page: 'current' }).data().each(function (group, i) {
                        if (last !== group) {
                            $(rows).eq(i).before(
                                '<tr class="group"><td colspan="5">' + group + '</td></tr>'
                            );

                            last = group;
                        }
                    });
                }
            });

但是在我的报告中这样输出,而我希望有这样一个表:
but output in my report like this whereas I expect such a table

2 个答案:

答案 0 :(得分:0)

$('#grid').DataTable({
            ajax: {
                url: '@Url.Action("Binding", "ETCPSummaryReport")',
                data: {
                    SCode : spesial,
                    divisioncode: $("#Division").val(),

                },
            },
            searching: false,
            destroy: true,
            bPaginate: true,
            bLengthChange: false,
            bFilter: false,
            bInfo: false,
            bSort: false,
            responsive: true,
            bServerSide: true,
            bProcessing: true,
            dom: 'Bfrtip',
            buttons: [
            {
                extend: 'excelHtml5',
                title: 'Data export'
            },
            {
                extend: 'excel', 
                text: 'Download Excel'
            }
            ],
            columns: [
                { "title": "Name" },
                { "title": "PAR" },
                { "title": "Total" },
                { "title": "TotalETCPPSR" },

            ],
            columnDefs: [
                { visible: false, targets: 0 }
            ],
            order: [[0, 'asc']],
            displayLength: 25,
            drawCallback: function (settings) {
                var api = this.api();
                var rows = api.rows({ page: 'current' }).nodes();
                var last = null;

                api.column(0, { page: 'current' }).data().each(function (group, i) {
                    if (last !== group) {
                        $(rows).eq(i).before(
                            '<tr class="group"><td colspan="5">' + group + '</td></tr>'
                        );

                        last = group;
                    }
                });
            }
        });

答案 1 :(得分:0)

Excel只能解析非常有限的一组HTML和CSS。因此某些样式根本无法使用。

首先,您必须确保 CSS文件包含在完全限定的路径和完全限定的域中。这是因为当浏览器将HTML文件传递给Excel时,它存储在一个临时位置。但是只有 HTML 文件存储在此位置,而不是所有包含的文件。因此,此HTML文件中的服务器相对链接将指向文件系统中的某个位置,而不指向样式表。是否从Excel得到警告取决于Excel版本,可能分别取决于用户设置或组策略。

也许这已经解决了您的问题。但是不要期望该表看起来与浏览器完全一样。颜色可以使用,但Excel有时会花哨的格式设置值。克服所有陷阱可能是一项艰巨的工作。您可能需要使用mso-... CSS样式来驯化Excel。