| ファイル名拡張子 |
.slk |
|---|---|
| インターネットメディアの種類 | アプリケーション/x-sylk |
| 開発者 | マイクロソフト |
シンボリック リンク( SYLK ) は、アプリケーション、特にスプレッドシート間でデータを交換するために使用されるMicrosoftファイル形式です。SYLK ファイルには、通常、サフィックスが付きます。表示可能なANSI文字のみで構成されているため、データベースなどの他のアプリケーションで簡単に作成および処理できます。
.slk
MicrosoftはSYLK仕様を公開したことはない。この形式のバリエーションは、Multiplan、Microsoft Excel、Microsoft Works、OpenOffice.org、LibreOffice [1]、Gnumericでサポートされている。この形式は1980年代に導入され、1986年以降進化していない。[2]
SYLK ファイルのよくある(そして偽の)「発生」は、コンマ区切り値(CSV)形式が引用符なしの最初のフィールド名「ID」で保存された場合、つまり最初の 2 文字が SYLK ファイル形式の最初の 2 文字と一致した場合に発生します。Microsoft Excel(少なくとも Office 2016 まで)は、ファイルの形式に関する誤解を招くエラー メッセージ(「開こうとしているファイル 'x.csv' は、ファイル拡張子で指定された形式と異なります...」など)を出力します。[3] [4]
SYLKは、攻撃者が任意のコードを実行できるようにし、CSVファイルの一見無害な外観の下に攻撃ベクトルを偽装する機会を提供し、最近の(2016年)バージョンのMicrosoft Excelではデフォルトで有効になっているため、セキュリティ上の問題を引き起こすことが知られています。[2]
制限事項
SYLK は Unicode をサポートしていません。Unicode をサポートするアプリケーション (Microsoft Excel など) によって SYLK ファイルが作成された場合でも、SYLK ファイルは Unicode ではなく、現在のシステムのANSIコード ページでエンコードされます。アプリケーションに、Unicode で表示できるが現在のシステムのコード ページにコード ポイントがない文字が含まれていた場合、SYLK ファイルでは疑問符 ('?') に変換されます。
SYLK ではセミコロンはフィールド区切り文字として扱われるため、データ値ではエスケープせずに使用することはできません。SYLK ファイル内の文字列にセミコロン (;) が含まれる場合は、その前にもう 1 つのセミコロンを付加して、たとえば「WIDGET;;AXC1254」のように文字列を表示する必要があります。MS Excel はインポート時に最初のセミコロンを削除し、データ要素は「WIDGET;AXC1254」のように表示されます。
SYLK 入力ファイルの各行は 260 文字以内である必要があります。そうでない場合、Microsoft Excel はエラー メッセージを発行し、長すぎる行の読み込みをスキップします。
サンプルSYLKコード
たとえば、.slk 拡張子を持つテキスト ファイル内の次の SYLK コード:
ID;P C;Y1;X1;K"1行目" C;Y2;X1;K"2行目" C;Y3;X1;K"合計" C;Y1;X2;K11 C;Y2;X2;K22 C;Y3;X2;K33 え
適切なスプレッドシートで読み取ると、次のように表示されます。
数値の書式設定
2桁の小数点の書式設定は、列2に適用されます。
F2;P2;C2
ここで、P0 は一般、P1 は小数点なし、P2 は 2 桁、P3 には以下に定義されているように 2 つの小数点と先頭の $ 記号が付きます。
ID;P
P;P一般
P;P_(* #,##0_);;_(* \-#,##0_);;_(* "-"_);;_(@_)
P;P_(* #,##0.00_);;_(* \(#,##0.00\);;_(* "-"??_);;_(@_)
P;P_("$"* #,##0.00_);;_("$"* \(#,##0.00\);;_("$"* "-"??_);;_(@_)
C;Y1;X1;K"1行目"
C;Y2;X1;K"2行目"
C;Y3;X1;K"合計"
C;Y1;X2;K11
C;Y2;X2;K22
C;Y3;X2;K0;ER1C2+R2C2
F2;P2;C2
え
適切なスプレッドシートで読み取ると、次のように表示されます。
列幅
F;W⟨n1⟩[S]⟨n2⟩[S]⟨n3⟩列のグループの幅を定義します。
- [ス]
- 1スペース
- ⟨n1⟩
- 最初の列
- ⟨n2⟩
- 最後の列
- ⟨n3⟩
- 文字数で表した列の幅
たとえば、これらの SYLK コードを追加すると、列 1 と 2 の列幅がそれぞれ 20 と 30 に調整されます。
1 1 20 2 2 30 2017/03/23 19:00 2017/0
セルの書式設定プロパティ
F; ⟨cl⟩ ⟨n⟩ ⟨c2⟩
- ⟨cl⟩
- 次の 1 文字の書式コードのいずれか:
- だ
- デフォルト
- C
- 連続クロスセル表示
- え
- 科学的累乗
- ふ
- 固定小数点
- グ
- 一般的な形式
- $
- 先頭に$と2つの小数点
- *
- 棒グラフ、単位ごとに 1 つのアスタリスク (5 は ***** になります)
- ⟨n⟩
- 桁数。
- ⟨c2⟩
- 次の 1 文字の配置コードのいずれか:
- だ
- デフォルト
- C
- 中心
- グ
- 一般(テキスト左、数字右)
- ら
- 左揃え
- R
- 右揃え
たとえば、次の SYLK コードはセルの書式設定プロパティを示しています。
ID;P P;P一般 C;Y1;X1;K「1行目左揃え」 F;P0;FG0L C;Y2;X1;K「2行目右揃え」 FP0FG0R C;Y3;X1;K「センターの合計」 F;P0;FG0C C;Y1;X2;K11 C;Y2;X2;K22 C;Y3;X2;K0;ER1C2+R2C2 F;Y1;X2;FF2L F;Y2;X2;FF2R F;Y3;X2;F$2C 1 2 25 1 2 25 2 25 3 25 4 25 5 え
SYLK構文
SYLK_ファイル::= 記録 + 記録::= レコードタイプフィールド* 改行
- IDレコード
- 使用:
- スプレッドシートの種類と作成者を識別するためのヘッダー。
- ファイル内の最初のレコードである必要があります。
- レコードタイプ:
- ID
- 必須フィールド:
- Pプログラム
-
- ファイル作成者
- 作成者候補には以下が含まれます:
- MP(マルチプラン)
- XL(エクセル)
- 作成者候補には以下が含まれます:
- ファイル作成者
- 可能なフィールド:
- いいえ
- 存在する場合、ファイルは;N スタイルのセル保護を使用します。
- 存在しない場合、ファイルは;Pスタイルのセル保護を使用します
- え
- 存在する場合、NEレコードは冗長です
- 存在しない場合、NEレコードは冗長ではありません
- 使用:
- B記録
- 使用:
- スプレッドシート内の行数と列数を示します。
- CレコードとFレコードの前に来ることを推奨
- レコードタイプ:
- B
- 必須フィールド:
- X列
- 列の最大数を指定します
- Y行
- 最大行数を伝える
- 使用:
- Cレコード
- 使用:
- セルの内容
- レコードタイプ:
- C
- 必須フィールド:
- X列
- 列位置(1から始まる)
- 可能なフィールド:
- Y列
- 行位置(1 から始まります)。省略した場合は、最後に見つかった値が使用されます。
- E表現
- セルの表現
- K値
- セルの値
- C列
- 列参照
- R列
- 行参照
- グ
- 共有価値を定義する
- だ
- 共通の表現を定義する
- S
- 共通の価値観や表現を参照する
- いいえ
- 存在する場合、セルは保護されません。
- ID レコードに存在せず、;N が存在する場合、セルは保護されます。
- ポ
- 存在する場合、セルは保護されます。
- 存在せず、ID レコードに ;N が存在しない場合、セルは保護されません。
- H
- 存在する場合、セルは非表示になります。
- 存在しない場合、セルは非表示になりません。
- M式
- (X,Y) から (C,R) への行列式
- 私
- マトリックス内
- 対応分野:
- ;G が存在する場合、;E は存在しない必要があります。
- ;G が存在する場合、;K も存在する必要があります。
- ;D が存在する場合、;E も存在する必要があります。
- ;S が存在する場合、;E、;K、;G、;D、および ;M は存在してはなりません。
- ;S が存在する場合、;R と ;C も存在する必要があります。(これらは、共有値/式のコピー元の行と列を定義します。)
- ID レコードに ;N が存在する場合、;P は存在しません。
- ID レコードに ;N が存在しない場合は、;N は存在しない必要があります。
- ;M が存在する場合、;E は存在しない必要があります。
- ;I が存在する場合、;K と ;E は存在しない必要があります。
- 使用:
- Pレコード
- 使用:
- セル形式
- F レコードが存在する場合は、それらの前に配置されます。
- 必須フィールド:
- P フォーマット
- Excel スタイルのセルの書式指定
- 使用:
- Fレコード
- 使用:
- 形式
- P レコードが存在する場合は、それに従います。
- 可能なフィールド:
- X列
- 列(1から始まる)
- Y列
- 行(1から始まる)
- C列
- 列(1から始まる)
- R列
- 行(1から始まる)
- F形式
- セル/行/列の形式
- フォーマットの形式は
- ch1 数字 ch2
- ch1は
- だ
- デフォルト
- C
- 通貨
- え
- 指数
- ふ
- 修理済み
- グ
- 一般的な
- $
- ドル
- *
- グラフ
- %
- パーセント
- 桁数は小数点以下の桁数です
- ch2はアライメントです
- だ
- デフォルト
- C
- 中心
- グ
- 標準
- ら
- 左
- R
- 右
- -
- 無視された
- バツ
- 埋める
- Dフォーマット
- デフォルトの形式。
- フォーマットの形式は
- ch1 数字 ch2
- ch1は
- C
- 通貨
- え
- 指数
- ふ
- 修理済み
- グ
- 一般的な
- $
- ドル
- *
- グラフ
- %
- パーセント
- 桁数は小数点以下の桁数です
- ch2はアライメントです
- C
- 中心
- グ
- 標準
- ら
- 左
- R
- 右
- -
- 無視された
- バツ
- 埋める
- え
- 数式を表示
- け
- カンマを表示
- W 列1 列2 幅
- 列幅を設定する
- N フォントIDサイズ
- 使用するフォント
- P指数
- Excelセル形式、Pレコードの番号(例:P0は最初のPレコードを意味し、通常はP;PGeneralとして宣言されます)
- Sスタイル
- スタイル
- 以下の文字はスタイルの一部となることができます
- 私
- イタリック
- だ
- 大胆な
- T
- グリッドライン上部
- ら
- グリッド線左
- B
- グリッドライン下部
- R
- グリッドライン右
- S
- 影付きの背景
- H
- 存在する場合、行/列ヘッダーを表示しない
- ファイル全体に存在しない場合は、行/列ヘッダーを表示します
- グ
- 存在する場合、デフォルトのグリッド線を表示しない
- ファイル全体に存在しない場合は、デフォルトのグリッド線を表示します
- 対応分野:
- ;X、;Y、;C、;R、;D、;E、;K、;W、;P、;H、または;G のうち少なくとも 1 つが存在する必要があります。
- ;X または ;Y が存在する場合は、;X と ;Y の両方が存在する必要があります。(これによりセルの書式が設定されます。)
- ;X が存在する場合、;R、;C、;E、;K、;W、;N、;H、;G は存在してはなりません。
- ;R が存在する場合、;X、;Y、;C、;E、;K、;W、;N、;H、;G は存在しません。(これにより、デフォルトの行形式が設定されます。)
- ;C が存在する場合、;X、;Y、;R、;E、;K、;W、;N、;H、;G は存在しません。(これにより、デフォルトの列形式が設定されます。)
- ;D が存在する場合、;X、;Y、;R、;C は存在しない必要があります。(これにより、デフォルトのスプレッドシート形式が設定されます。)
- ;X、;Y、;R、;C が存在する場合、;P および/または ;F および/または ;S が存在する必要があります。
- 使用:
- Oレコード
- 使用:
- オプション
- 可能なフィールド:
- G iter デルタ
- 存在する場合、値の反復を許可する
- 存在しない場合、循環参照は許可されません。
- iter (最大反復回数)
- デルタ(ステップテスト。小さければ終了。)
- C
- 最も近い前のCレコードでの完了テスト
- ポ
- シートは保護されています
- ら
- A1モード参照を使用する
- ;L が指定されている場合でも、SYLK ファイル式では R1C1 参照が使用されます。
- ま
- 存在する場合は、手動で再計算します。
- 存在しない場合は、自動再計算を使用します。
- え
- マクロシート。
- これは、NN レコード内の ;G または ;F フィールドが最初に出現する前に表示される必要があります。
- これは、マクロのみの関数を使用する最初の C レコードの前に表示する必要があります。
- V値
- 値はシリアル日付値の計算に使用される基準日を示します
- 0:1 1900年1月
- 4:1 1904年1月
- 使用:
- NUレコード
- 使用:
- ファイル名の置換
- NE レコードが存在する場合は、その前に置く必要があります。
- 必須フィールド:
- L ファイル名
- 古いファイル名
- F ファイル名
- 新しいファイル名
- 使用:
- NEレコード
- 使用:
- 外部リンク
- 必須フィールド:
- E表現
- スプレッドシート上のターゲットエリア
- F ファイル名
- ソースファイル
- S式
- 外部シート上のソース領域
- 使用:
- NNレコード
- 使用:
- 名前を定義する
- 名前を使用する前に NN を使用するとより効率的になります。
- 必須フィールド:
- N名
- 名前
- E表現
- 名前の値を説明する式
- 可能なフィールド:
- G ch1 ch2
- コマンドキーエイリアスを持つ実行可能名(マクロ)
- K ch1 ch2
- 未使用のコマンドエイリアスを含む通常の名前
- ふ
- 関数として使用可能
- 対応分野:
- ;G が存在する場合、;K は存在しない必要があります。
- 使用:
- W記録
- 使用:
- ウィンドウの定義
- 使用:
- ナショナルリーグ記録
- 使用:
- チャート外部リンク
- 使用:
- Eレコード
- 使用:
- ファイルの終わり。
- 最後のレコードである必要があります。
- 使用:
日付と時刻は浮動小数点値として保存されます。整数部分は 1900 年 1 月 1 日からの日数 (O レコードに ;V0 ディレクティブが含まれている場合、計算の開始点として 1900 が指定されます)、小数部分は秒数を 86400 で割った値 (60*60*24、1 日の秒数) です。UNIX 時間への変換は、1970 年 1 月 1 日と 1900 年 1 月 1 日 (25,569 日) の差を減算し、86400 を掛けることで実行できます。UNIX 時間から SYLK 日付時刻への変換は、値を 86400 で割って 25569 を加算することで実行できます。セル スタイルは、たとえば、P;Pdd/mm/yyyy\ hh:mm:ss適切に表示されるように、何らかの日付書式設定値に設定する必要があります。
Excel で開かれた .slk ファイルのエクスポートでは、セル内の文字数が 255 文字に制限されます。この制限は LibreOffice にはありません。
外部リンク
- 詳細な例はこちらでもご覧いただけます
SYLK の構文については、次の場所を参照してください。
- Microsoft SYLK の概要 (役に立つ情報については、SYLK ファイル形式の悪用に関する記事も参照してください)
- GFF 形式の概要: Microsoft SYLK
そして:
- comp.apps.spreadsheets よくある質問
- Excel のヒント Unix の日付タイムスタンプを変換する
Excel での読み取りと保存に関する制限:
- Microsoft.com Excel の機能
参考文献
- ^ 「LibreOffice Calc - サポートされているファイル形式」。2016年11月12日。
- ^ ab Stan Hegt (2019-10-30). 「SYLK ファイル形式の悪用」. outflank.nl . 2019-12-14閲覧。
- ^ 「ファイルを開くと「SYLK: ファイル形式が無効です」というエラー メッセージが表示される」 。2015年8 月 18 日閲覧。
- ^ 「Excel CSV インポートで SYLK ファイル形式エラーが返される」。2012 年 1 月 9 日。2015 年8 月 18 日閲覧。
