【发布时间】: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