Основываясь на этом ответе, я правильно форматирую даты в ячейках в экспортированном файле .xlsx, используя Sheet.js
. Когда я смотрю на форматирование ячеек в заполненных ячейках в экспортированном файле, кажется, что пользовательский формат даты применяется правильно:
Однако, когда новые данные вводятся в экспортируемый .xlsx
, формат даты по умолчанию соответствует тому, что (я думаю) является форматом даты по умолчанию Excel
:
Я хотел бы, чтобы мой пользовательский формат даты (m/d/yyyy h:mm:ss AM/PM) применялся ко ВСЕМ ячейкам в столбце. Так можно ли отформатировать весь столбец, а не только заполненные ячейки? Я знаю, что это можно сделать через графический интерфейс Excel, но мне интересно, можно ли это сделать с помощью кода Sheet.js
, чтобы, если пользователь вводит заглушку даты, она преобразовывалась в пользовательский формат.
var excelData = excelImportExport.getExcelForExport(editorJson);
var headers = ["Event Start Date", "Event End Date", "Event Title", "Event Subtitle", "ID"];
var ws = XLSX.utils.json_to_sheet(excelData.events,
{
header: headers,
skipHeader: false,
dateNF: "m/d/yyyy h:mm:ss AM/PM",
cellDates: true
});
var wb = XLSX.utils.book_new();
if (!wb.Custprops) wb.Custprops = {};
wb.Custprops["Export Info"] = excelData.exportInfo
const dateFmt = "m/d/yyyy h:mm:ss AM/PM";
for (let col of [0, 1]) {
formatColumn(ws, col, dateFmt)
}
XLSX.utils.book_append_sheet(wb, ws, appName);
XLSX.writeFile(wb, arg.file);
function formatColumn(worksheet, col, fmt) {
const range = XLSX.utils.decode_range(worksheet['!ref'])
for (let row = range.s.r + 1; row <= range.e.r; ++row) {
const ref = XLSX.utils.encode_cell({ r: row, c: col })
if (worksheet[ref] ) {
worksheet[ref].z = fmt;
}
}
}