【问题标题】:Why jQuery data table does not export date correctly when month is two digit in Laravel when export as EXCEL file?为什么在 Laravel 中导出为 EXCEL 文件时,当月份为两位数时,jQuery 数据表无法正确导出日期?
【发布时间】:2021-05-16 04:21:03
【问题描述】:

我想将导出数据导出为EXCEL 文件,与视图中显示的完全相同,它可以工作,但没有正确导出日期,我尝试如下:

 $('#get_hourly_report').click(function () {

        var id = $('#teacher').val();
        var first_date = $('#jalali-datepicker3').val();
        var second_date = $('#jalali-datepicker4').val();
        $(".h_report_icon").addClass('fa fa-spinner fa-spin');
        $.ajax({
            method: "get",
            url: "attendance/getTeacherAttendanceReport/",
            data: {
                'id': id,
                'f_date': first_date,
                's_date': second_date
            },
            success: function (data) {
                $.fn.dataTable.moment('DD/MM/YYYY');
                table = $('#example2').DataTable({

                    destroy: true,
                    "bPaginate": false,
                    dom: 'Bfrtip',
                    bFilter: false,
                    buttons: [
                        {
                            extend: 'excelHtml5',
                            footer: true,
                            customize: (xlsx, config, dataTable) => {
                                let sheet = xlsx.xl.worksheets['sheet1.xml'];
                                let footerIndex = $('sheetData row', sheet).length;
                                let $footerRows = $('tr', dataTable.footer());

                                // If there are more than one footer rows
                                if ($footerRows.length > 1) {
                                    // First header row is already present, so we start from the second row (i = 1)
                                    for (let i = 1; i < $footerRows.length; i++) {
                                        // Get the current footer row
                                        let $footerRow = $footerRows[i];

                                        // Get footer row columns
                                        let $footerRowCols = $('th', $footerRow);

                                        // Increment the last row index
                                        footerIndex++;

                                        // Create the new header row XML using footerIndex and append it at sheetData
                                        $('sheetData', sheet).append(`
                                                    <row r="${footerIndex}">
                                                      ${$footerRowCols.map((index, el) => `
                                                        <c t="inlineStr" r="${String.fromCharCode(65 + index)}${footerIndex}" s="2">
                                                          <is>
                                                            <t xml:space="preserve">${$(el).text()}</t>
                                                          </is>
                                                        </c>
                                                      `).get().join('')}
                                                    </row>
                                                  `);
                                    }
                                }
                            }
                        }
                    ],
                    "processing": true,
                    data: data.teacherAttendanceReport,
                    columns: [
                        {
                            title: 'شماره', render: function (data, type, row, meta) {
                                return meta.row + meta.settings._iDisplayStart + 1;
                            }
                        },
                        {title: 'نام کارمند', data: 'first_name'},
                        {title: 'روز هفته', data: 'persian_name'},
                        {title: 'ماه', data: 'month_name'},
                        {title: 'تاریخ مکمل', data: 'date'},
                        {title: 'ساعت درسی', data: 'full_time'},
                        {title: 'حالت حاضری', data: 'as_persian_name'},

                    ],


                });
                $(".h_report_icon").removeClass('fa fa-spinner fa-spin');
                $('#h_present').html(data.present)
                $('#h_absent').html(data.absent)


            },
            error: function () {

            }
        });
    });

当我将导出为EXCEL 文件时,如果日期类似于1400-2-15,则结果符合预期。但如果日期是 1400-02-13,那么它会像 ###### 一样导出。

我希望它像1400-02-13,如果有人知道问题出在哪里,请帮助我!

【问题讨论】:

  • return moment(data, 'YYYY-MM-DD').format('YYYY-MM-DD') 什么都不做。您期望格式为 YYYY-MM-DD 的日期,并且您正在以相同的格式对其进行格式化。问题可能是数据首先不在YYYY-MM-DD 中,因此无法解析它,或者日期列不是第 3 列。如果您的表格与照片一模一样,则它不是第 3 列。
  • @PouriaMoosavi 那我该怎么做呢?
  • @Zia Yamin,您是否尝试在 Excel 文件中增加日期导出到的列的宽度?当列宽无法显示完整的日期或数字时,Excel 将显示######。并且不要忘记为适合您的解决方案投票...
  • @Raky 是的,我做到了,随着我增加列,######## 的数量变得更多。

标签: javascript jquery datatables


【解决方案1】:

在 HTML 头部插入 utf-8 元标记:

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<meta charset="utf-8">

【讨论】:

    猜你喜欢
    • 2016-05-27
    • 1970-01-01
    • 1970-01-01
    • 2021-12-11
    • 2017-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-17
    相关资源
    最近更新 更多