[]
SpreadJS は、次の方法を使用して Excel ファイルへのインポートとエクスポートをサポートします。
クライアント側で Excel のインポートとエクスポート
暗号化された Excel ファイルのインポートとエクスポート
クライアント側でimportおよびexportメソッドを使用すると、Excelファイル(.xlsx、.xlsm、.xltm)をインポートしたり、Excelにエクスポートしたりできます。
saveメソッドで生成したExcel形式ファイルの状態は、ダウンロードによって読み取り専用となります。これはインターネットを経由してダウンロードされるファイルに対してウェブブラウザがZone.Identifier情報を自動的に付与した影響です。Microsoft ExcelはZone.Identifier情報を検知し、Excel形式ファイルの初回オープン時に警告メッセージを表示します。また、エクセルファイルをインポートおよびエクスポートするには、gc.spread.sheets.io.xx.x.x.min.jsを参照する必要があります。
Excelファイルをローカルにダウンロードすることも、返されたExcelファイル(BLOB型)を取得し、サーバーに送信することもできます。
次のサンプルコードは、Excelファイルを開き、保存します。コードの最初の部分は、クライアント側のインポートおよびエクスポートの依存関係のファイルを示します。
<!DOCTYPE html>
<html lang="en">
<head>
<link href="css/gc.spread.sheets.excel2013white.x.x.x.css" rel="stylesheet" />
<script src="scripts/gc.spread.sheets.all.x.x.x.min.js" type="application/javascript"></script>
<script src="scripts/gc.spread.sheets.io.x.x.x.min.js"></script>
<script src="scripts/FileSaver.js"></script>
<script>
var spread;
window.onload = function () {
spread = new GC.Spread.Sheets.Workbook(document.getElementById("ss"));
}
// Import the xlsx, ssjson, csv file to spread.
function ImportFile() {
var file = document.getElementById("fileDemo").files[0];
spread.import(file, function () {
// success callback to do something
}, function (e) {
console.log(e); // error callback
}, {
fileType: GC.Spread.Sheets.FileType.excel
});
}
// Export spread to xlsx, ssjson, csv file.
function ExportFile() {
var fileName = "fileNamehere.xlsx";
spread.export(function (blob) {
// save blob to a file
saveAs(blob, fileName);
}, function (e) {
console.log(e);
}, {
fileType: GC.Spread.Sheets.FileType.excel
});
}
</script>
</head>
<body>
<div>
<input type="file" name="files[]" id="fileDemo" accept=".xlsx" />
<input type="button" id="loadExcel" value="Import" onclick="ImportFile()" />
<input type="button" class="btn btn-default" id="saveExcel" value="Export" onclick="ExportFile()" />
<div id="ss" style="width:100%; height:500px"></div>
</div>
</body>
</html>次の表は、Excelファイルにインポートまたはエクスポートできる機能を示します。
機能 | 説明 | インポート | エクスポート |
|---|---|---|---|
ワークブック(spread) | tabstrip: tabStripVisible, startSheetIndex, tabStripRatio, tabColor | √ | √ |
スクロールバー: showHorizontalScrollbar, showVerticalScrollbar | √ | √ | |
シート: シートの名前、シートの表示/非表示設定 | √ | √ | |
参考スタイル:R1C1またはA1 | √ | √ | |
カスタム名 | √ | √ | |
共有の文字列 | データシートに使用された文字列(共通の文字列、空白文字列) | √ | √ |
テーマ | カラースキーム | √ | √ |
フォントスキーム( Spread.Sheetsには詳細なフォントがありません) | √ | √ | |
フォーマットスキーム(Spread.Sheetsにはフォーマットスキームがありません) | X | √ | |
スタイル | cellStyles:Spread.Sheetsがサポートされているすべてのスタイル | √ | √ |
さまざまな形式(テーブルに使用される形式、条件付き形式またはフィルタ) | √ | √ | |
tableStyles | √ | √ | |
ワークシート | rowRangeGroup、colRangeGroup | √ | √ |
rowCount と columnCount | √ | √ | |
グリッドライン表示/非表示設定、グリッドラインの色 | √ | √ | |
列ヘッダ/行ヘッダの表示/非表示設定 | √ | √ | |
ズーム | √ | √ | |
選択 | √ | √ | |
activeRow、 activeColumn | √ | √ | |
行・列の固定 (frozenRowCount, frozenColumnCount) | √ | √ | |
デフォルトのrowHeightまたはcolumnWidth | √ | √ | |
columnInfo:列の幅、表示/非表示、スタイル設定 | √ | √ | |
セル結合 | √ | √ | |
シートの保護の状態 | √ | √ | |
rowInfo: 行の高さ、表示/非表示、スタイル設定 | √ | √ | |
cellInfo:セルの値、数式、スタイル、結合設定 | √ | √ | |
カスタム名 | √ | √ | |
条件付き形式 | √ | √ | |
コメント | √ | √ | |
画像 | √ | √ | |
スライサー | √ | √ | |
スパークライン | √ | √ | |
テーブル | √ | √ | |
フィルタ | √ | √ | |
検証 | √ | √ | |
アウトライン | √ | √ | |
印刷 | √ | √ |
SpreadJS は、Excel マクロ有効ブックファイル(.xlsm)およびマクロ有効テンプレートファイル(.xltm)のインポート/エクスポートに対応しています。
つまり、SpreadJS でこれらのファイル形式の読み込みや保存ができ、埋め込まれた VBA マクロが保持されるため、Microsoft Excel で再度開いた際にもそのまま利用できます。
マクロのリスク
マルウェア警告:Excel は信頼できないソース(例:インターネットからダウンロードしたファイル)からのマクロをブロックします。エクスポートしたファイルを開く際は、手動でマクロを有効化する必要があります。
セキュリティ設定:Microsoft のマクロセキュリティガイドラインに従ってください: インターネットからのマクロは、Officeで既定でブロックされます | Microsoft Learn。
形式の制約
マクロ消失:.xlsxやSpreadJSネイティブ形式(.sjs、.ssjson)にエクスポートする際、マクロは除去されます。
マクロの編集不可:SpreadJS内ではマクロの閲覧、編集、実行ができません。また、SpreadJSでワークシートのレイアウトを変更すると、特定のセルアドレスを参照するマクロロジックに影響を与える場合があります。
この例では、インポート/エクスポートメソッドで excelFileType パラメータを 'XLSM' に設定することで、.xlsmファイルのインポート・エクスポートを実現しています。
// ファイルを取得
var fileName = "fileNamehere.sjs";
// エクスポート
spread.export(function (blob) {
// blob をファイルとして保存
saveAs(blob, fileName);
}, function (e) {
console.log(e);
}, {
fileType: GC.Spread.Sheets.FileType.sjs,
excelFileType: 'XLSM'
});
// ファイルの blob を取得
var file = document.getElementById("fileInput").files[0];
// インポート
spread.import(file, function () {
// 成功時のコールバック(何か処理を実行)
}, function (e) {
console.log(e); // エラー時のコールバック
}, {
fileType: GC.Spread.Sheets.FileType.excel,
excelFileType: 'XLSM'
});SpreadJSは、暗号化されたExcelファイルのインポートとエクスポートをサポートします。
暗号化されたExcel ファイルをインポートするには、importメソッドのpasswordプロパティにパスワードを設定する必要があります。正しいパスワードが指定されている場合、ファイルは正常にインポートされます。ただし、無効または正しくないパスワードを指定すると、errorCallBack 関数がトリガーされ、エラーが返されます。ErrorCode 列挙体のメンバーを使用すると 、エラー メッセージを指定できます。
次のサンプルコードは、暗号化されたExcelファイルをインポートする方法を示します。
const userPassword = 'Asdf0123';
// パスワード付き Excel ファイルをインポートします。
const errorCallback = (e) => {
if (e.errorCode = GC.Spread.Sheets.IO.errorCode.invalidPassword) {
console.log('無効なパスワードです。');
} else if (e.errorCode = GC.Spread.Sheets.IO.errorCode.noPassword) {
console.log('パスワードを入力してください。');
}
}
spread.import(file, () => { }, errorCallback, {
fileType: GC.Spread.Sheets.FileType.excel,
password: userPassword,
})exportメソッドのpasswordプロパティを指定することで、 Excel ファイルをエクスポートする時にパスワードを設定することは出来ます。SpreadJS では、パスワードを指定する場合に暗号化されたExcelファイルがエクスポートします。パスワードを指定しない場合、暗号化されない元のExcelファイルをエクスポートします。
次のサンプルコードは、暗号化されたExcelファイルをエクスポートする方法を示します。
const userPassword = 'ABC0123';
const fileName = 'encrypt-export.xlsx';
// パスワード付き Excel ファイルをエクスポートします。
spread.export(blob => saveAs(blob, fileName), e => console.log(e),
{fileType: GC.Spread.Sheets.FileType.excel,
password: userPassword,
}
);SpreadJSデザイナを使用する場合もExcelファイルのインポートまたはエクスポートする時にパスワードを設定することができます。
暗号化されたファイルをインポートするには、[ファイル]をクリックして[インポート]を選択します。[インポート]メニューページで[Excelファイル]を選択してファイルインポート設定を指定し、[パスワード]フィールドにパスワードを入力して[Excelファイル]をクリックします。

暗号化されたファイルをエクスポートするには、[ファイル]をクリックして[エクスポート]を選択します。[エクスポート]メニューページで[Excelファイル]を選択してファイルのエクスポート設定を指定し、[パスワード]フィールドにパスワードを入力して[Excelファイル]をクリックします。
