作成日: 2025/04/08 最終更新日: 2025/04/08
文書種別
不具合
状況
修正済み
詳細
配列を含む数式をExcelにエクスポートすると、正しくエンコード処理が行われず、出力したファイルが破損します。
SpreadJS(Ver.13.0.4)以降のバージョンでは、以下のように動的配列を有効にした場合に現象が発生します。
spread.options.allowDynamicArray = true;
回避方法
SpreadJS(Ver.14.0.6)で修正済み。
Ver.14.0.6より前のバージョンでは、以下のように出力する前に配列のエンコード処理を追加して回避が可能です。
var encodeNode = function (str) {
if (typeof str === 'string') {
return str.replace(/&/g, '&')
.replace(/</g, '<')
.replace(/>/g, '>')
.replace(/"/g, '"')
.replace(/'/g, ''');
}
if (!(str === null || str === void 0)) {
return '' + str
}
return str;
}
var json = spread.toJSON();
var jsonObj = JSON.parse(JSON.stringify(json), function (key, value) {
if (value && value.arrayInfo) {
var cellValue = value.value, cellFormula = value.formula;
if (cellFormula && typeof cellValue === 'string') {
value.value = encodeNode(cellValue);
}
return value;
}
return value;
});
var excelIO = new GC.Spread.Excel.IO();
excelIO.save(jsonObj, function (blob) {
saveAs(blob, fileName);
}, function (e) {
console.log(e);
});