作成日: 2025/02/13 最終更新日: 2025/03/26
文書種別
不具合
状況
修正済み
詳細
セルの自動マージでSelectionModeにsourceを設定し、Excelファイルを出力する際に以下の条件を設定すると、出力したファイルが破損します。
- includeBindingSource: true
- includeAutoMergedCells: true
- columnHeadersAsFrozenRows: true
回避方法
SpreadJS (Ver.18.0.6)で修正済み。
Ver.18.0.6より前のバージョンでは、以下のコードを使用して、正しく出力することが可能です。
【SheetsIOモジュールを使用する場合】
var oldToJSON = GC.Spread.Sheets.Workbook.prototype.toJSON;
GC.Spread.Sheets.Workbook.prototype.toJSON = function (args) {
if (args && args.includeAutoMergedCells) {
args.includeAutoMergedCells = false;
}
return oldToJSON.apply(this, arguments)
}
spread.export(function (blob) {
GC.Spread.Sheets.Workbook.prototype.toJSON = oldToJSON;
saveAs(blob, fileName);
}, function (e) {
console.log(e);
}, {
fileType: GC.Spread.Sheets.FileType.excel,
columnHeadersAsFrozenRows: true,
includeAutoMergedCells: true,
includeBindingSource: true,
saveAsView: true,
})
【ExcelIOモジュールを使用する場合】
var oldToJSON = GC.Spread.Sheets.Workbook.prototype.toJSON;
GC.Spread.Sheets.Workbook.prototype.toJSON = function (args) {
if (args && args.includeAutoMergedCells) {
args.includeAutoMergedCells = false;
}
return oldToJSON.apply(this, arguments)
}
var json = spread.toJSON({
includeBindingSource: true,
columnHeadersAsFrozenRows: true,
includeAutoMergedCells: true,
saveAsView: true
});
GC.Spread.Sheets.Workbook.prototype.toJSON = oldToJSON;
let excelIO = new GC.Spread.Excel.IO();
excelIO.save(json, function (blob) {
saveAs(blob, fileName);
}, function (e) {
console.log(e);
});