作成日: 2024/11/11 最終更新日: 2024/11/11
文書種別
制限事項
発生環境
Ver.17.0.10以前:allowCopyPasteExcelStyleがtrueの場合のみ発生します。
Ver.17.1.5以降:allowCopyPasteExcelStyleを問わず発生します。
詳細
Excelから罫線や背景色を設定した空白のセルをコピーし、SpreadJSのセルにペーストすると全角スペースが付与されます。
回避方法
ペーストした後に、空白文字の取り除く処理を実装して回避できます。
sheet.bind(GC.Spread.Sheets.Events.ClipboardPasted, function (sender, args) {
clipPasted = false;
if (args.pasteData.html != "" && args.pasteData.text != "") {
clipPasted = true;
pasteRange = args.cellRange;
}
if (!navigator.clipboard) {
setTextArray(copiedText);
}
});
document.getElementById("ss").addEventListener('paste', function (event) {
if (!navigator.clipboard) {
if (event.clipboardData) {
// Edge
copiedText = event.clipboardData.getData('text');
}
return;
}
if (!clipPasted) return;
// Chrome, FireFox
let paste = (event.clipboardData || window.clipboardData).getData('text');
setTextArray(paste);
});
function setTextArray(paste) {
var textArray = [];
var copyText = paste.split('\n');
for (var i = 0; i < pasteRange.rowCount; i++) {
var copyRow = copyText[i].replace(/\r/, "").split('\t');
for (var j = 0; j < copyRow.length; j++) {
if (copyRow[j] === "") {
copyRow[j] = null;
}
}
textArray.push(copyRow);
}
sheet.suspendPaint();
sheet.suspendDirty();
sheet.suspendEvent();
sheet.setArray(pasteRange.row, pasteRange.col, textArray);
sheet.resumeEvent();
sheet.resumeDirty();
sheet.resumePaint();
};