作成日: 2026/07/02 最終更新日: 2026/07/02
文書種別
不具合
状況
回避方法あり
詳細
テーブルシートおよびガントシートは、Excelエクスポート時に内部的にExcelテーブルへ変換されます。その際、シート名をもとにExcelのテーブル名を生成しますが、Excelのテーブル名は半角数字で始まる名前を使用できません。そのため、シート名が半角数字で始まる場合、無効なテーブル名が生成され、エラーが発生します。
回避方法
以下のサンプルコードのように、Excelにエクスポートする前に無効なシート名の先頭に'_'を付けて一時的に変更し、エクスポート完了後に元に戻す処理を追加して回避が可能です。
// Excelにエクスポートする前に無効なシート名の先頭に_を付けて一時的に変更し、完了後に元に戻す
var exportFN = GC.Spread.Sheets.Workbook.prototype.export;
var originalTableNameFn = GC.Spread.Sheets.Tables.Table.prototype.name;
GC.Spread.Sheets.Workbook.prototype.export = function (successCallBack, errorCallBack, exportOptions) {
let { fileType } = exportOptions;
let isValidTableName = function (name) {
return name && (!(/\d/.test(name[0]) || //数字から始まり
/[\s\+\-\*\\:%!\[\]]/.test(name) || //特殊文字を含む
["C", "c", "R", "r"].indexOf(name) !== -1 || //C または R
/^[A-Za-z]{1,3}(\$)?\d+$/.test(name) || // A1形式のセル参照
/^[Rr]\d*[Cc]\d*$/.test(name) // R1C1形式のセル参照
));
}
let replaceInvalidTableName = function (name) {
if (name) {
var newName = isValidTableName(name) ? name : '_' + name;
return originalTableNameFn.call(this, newName);
}
return originalTableNameFn.apply(this, arguments);
}
if (fileType === GC.Spread.Sheets.FileType.excel) {
//エクスポート前にガントシートとテーブルシートのシート名を確認し、無効な場合はシート名を変更する
let spread = this, renameList = [];
for (let i = 0; i < spread.getSheetTabCount(); i++) {
let sheet = spread.getSheetTab(i);
if (sheet instanceof GC.Spread.Sheets.GanttSheet.GanttSheet || sheet instanceof GC.Spread.Sheets.TableSheet.TableSheet) {
if (!isValidTableName(sheet.name())) {
GC.Spread.Sheets.Tables.Table.prototype.name = replaceInvalidTableName;
break;
}
}
}
var result = exportFN.apply(this, arguments);
GC.Spread.Sheets.Tables.Table.prototype.name = originalTableNameFn;
return result;
}
return exportFN.apply(this, arguments);
}