作成日: 2021/06/29 最終更新日: 2021/07/12
文書種別
制限事項
状況
回避方法あり
詳細
MM/ddを日付として認識できるよう以下のようにカルチャを追加し、Excelをインポートして日付をMM/ddの形式で入力後、Excelにエクスポートすると、エクスポートしたExcelでは日付値がシリアル値で表示されます。
=====================================
var cultureInfo = GC.Spread.Common.CultureManager.getCultureInfo('ja-jp');
cultureInfo.DateTimeFormat.preselectedFormatters.push('MM/dd');
=====================================
Excelからインポートするセルの書式がExcel上で「標準」だった場合、インポート後のSpreadJSでは「General」に設定されます。SpreadJSでは「General」の書式のセルに日付値を設定した場合、日付書式を適用した文字列が表示されますが、Excelでは日付値を設定したセルの書式を「標準」に設定した場合は、日付のシリアル値が表示されます。したがってSpreadJSで「General」の書式のセルに日付値を設定してExcelにエクスポートすると、Excel上では「標準」書式が適用されるため、日付値がシリアル値が表示されます。これはExcel側の仕様によるものです。
回避方法
カルチャに追加した「MM/dd」形式で日付が入力された場合、セルの書式を「yyyy/mm/dd」に設定して回避が可能です。
spread.bind(GC.Spread.Sheets.Events.EditEnded, function(e,args) {
let formatter = args.sheet.getFormatter(args.row, args.col);
let cellValue = args.sheet.getValue(args.row, args.col);
if(toString.call(cellValue)==="[object Date]" && formatter&&formatter.toUpperCase() === "GENERAL") {
if (args.editingText.match(/\d{1,2}\/\d{1,2}/g)) {
args.sheet.setFormatter(args.row, args.col, "yyyy/mm/dd");
}
}
});