GrapeCity.devlog

グレープシティ株式会社のDeveloper Tools〈開発支援ツール〉の、製品のTIPSや発売などに関する最新情報をお届けします。

GrapeCity

Excelファイル出力でブックの保護や初期表示状態の設定を行うには?

表計算データグリッド「SPREAD for Windows Forms」では、表示されたグリッドをExcelファイルに出力できるのはもちろんですが、その際に以下の3つの属性を設定することもできます。
※バージョン11.0J以降で利用可能です。

出力したExcelファイルに対してシートの追加やシート名の変更を禁止したり、ブックの初期表示をあらかじめ「ページレイアウト」にしたり、タイトルや作成者などのファイル概要情報を定義したりといった細かな設定をSPREADから行うことが可能です。

今回はこれらの機能を利用する方法について説明していきたいと思います。

ブックの保護機能を使う

出力したExcelファイル上で保護機能を有効にして、シートの追加や削除、そしてシート名の変更などを禁止することができます。

この機能は、出力されたExcelファイルのメニューで[校閲]-[ブックの保護]を選択して表示される保護機能を有効にするもので、SaveExcelメソッドの引数にパスワードを設定してExcelファイルの表示そのものを制限する機能とは別のものです。

private void button1_Click(object sender, EventArgs e)
{
    // 値の設定
    fpSpread1.Sheets[0].SetValue(0, 0, "test1");

    // Excelシートの「ブックの保護」機能を使う
    fpSpread1.SetProtect(true, "password2");

    // Excelファイルの保存(パスワードで保護)
    fpSpread1.SaveExcel("test1.xlsx", FarPoint.Excel.ExcelSaveFlags.UseOOXMLFormat, "password1");
}

上記のコードで出力されたExcelファイルでは、"password1"でExcelファイルをオープンして"password2"でブックの保護を解除することで、シートの追加やシート名の変更が可能になります。

f:id:COneUserRH:20181209184427j:plain

ブックの初期表示を指定する

出力したExcelファイルを開く時のブックの表示状態を指定することもできます。

Excelファイルのメニューから[表示]-[ブックの表示]を選択して指定できる次の3種類の表示状態をExcelファイルを出力するSPREAD側で設定できます。

  • 標準
  • 改ページビュー
  • ページレイアウト

ブックの表示を指定するには、SheetViewクラスのViewプロパティを使います。例えば、次のコードでは、このViewプロパティにSheetViewType.PageLayoutを設定することで、Excelファイルがページレイアウト形式で表示されるように指定しています。

private void button2_Click(object sender, EventArgs e)
{
    // 値の設定
    fpSpread1.Sheets[0].SetValue(0, 0, "test2");

    // ブックの初期表示の指定
    fpSpread1.Sheets[0].View = GrapeCity.Spreadsheet.SheetViewType.PageLayout;

    //  Excelファイルの保存
    fpSpread1.SaveExcel("test2.xlsx", FarPoint.Excel.ExcelSaveFlags.UseOOXMLFormat);
}

下の画像は、上記のコードで出力されたExcelファイルを開いたところです。

f:id:COneUserRH:20181209184710p:plain

ファイルの概要情報を設定する

Excelファイルのメニューから[ファイル]を選択したときに表示される[プロパティ]欄に記載される情報や、エクスプローラー上でファイルを右クリックして表示されるコンテキストメニューで[プロパティ]を選択したときに表示されるダイアログの[詳細]タブに記載されるファイルに関する情報をSPREAD上で設定することができます。

また、SPREADにインポートしたExcelファイルに設定されていたこれらの情報をSPREADの機能を使って取得することも可能です。

設定可能な主な概要情報は以下のとおりです。

  • タイトル
  • タグ
  • コメント
  • 状態(内容の状態)
  • 分類(分類項目)
  • サブタイトル(件名)
  • ハイパーリンクの基点
  • 会社
  • 更新日時(前回保存日時)
  • 作成日時(コンテンツの作成日時)
  • 管理者(マネージャー)
  • 作成者
  • 最終更新者(前回保存者)

※カッコ内はWindows 10のエクスプローラー上での表記です。

また、Excelファイルの機能では表示されませんが、エクスプローラー上でのみ表示される改訂番号、バージョン番号、プログラム名、言語にも対応しています。  

ただし、これらの情報は、SaveExcelメソッドの引数でパスワードを設定して出力したExcelファイルでは表示されないので注意が必要です。

f:id:COneUserRH:20181209184857j:plain
Excelファイルでプロパティを確認しているところ

f:id:COneUserRH:20181209185004j:plain
エクスプローラー上でファイルのプロパティを確認しているところ

以上のすべての項目は、FpSpreadのDocumentPropertiesクラスの各プロパティを使って設定または取得することができます。

private void button3_Click(object sender, EventArgs e)
{
    // 値の設定
    fpSpread1.Sheets[0].SetValue(0, 0, "test3");

    // ファイル概要の保存
    //【ファイルの内部にのみ設定される項目】
    fpSpread1.DocumentProperties.ApplicationVersion = "01.0000";

    //【ファイルのプロパティだけに設定される項目】
    fpSpread1.DocumentProperties.Application = "Application"; // プログラム名
    fpSpread1.DocumentProperties.Language = "Language"; // 言語
    fpSpread1.DocumentProperties.Revision = 1; // 改訂番号
    fpSpread1.DocumentProperties.Version = "Version"; // バージョン番号

    //【Excelのプロパティにも設定される項目】
    fpSpread1.DocumentProperties.Category = "Category"; // 分類
    fpSpread1.DocumentProperties.Company = "Company"; // 会社
    fpSpread1.DocumentProperties.ContentStatus = "ContentStatus"; // 状態
    fpSpread1.DocumentProperties.Created = new DateTime(2018, 12, 1); // 作成日時
    fpSpread1.DocumentProperties.Creator = "Creator"; // 作成者
    fpSpread1.DocumentProperties.Description = "Description"; // コメント
    fpSpread1.DocumentProperties.HyperlinkBase = "\\"; // ハイパーリンクの起点
    fpSpread1.DocumentProperties.Keywords.Add("Keyword"); // タグ
    fpSpread1.DocumentProperties.LastModified = new DateTime(2019, 1, 1); // 更新日時
    fpSpread1.DocumentProperties.LastModifiedBy = "LastModifiedBy"; // 最終更新者
    fpSpread1.DocumentProperties.Manager = "Manager"; // 管理者
    fpSpread1.DocumentProperties.Subject = "Subject"; // サブタイトル
    fpSpread1.DocumentProperties.Title = "Title"; // タイトル

    //  Excelファイルの保存
    fpSpread1.SaveExcel("test3.xlsx", FarPoint.Excel.ExcelSaveFlags.UseOOXMLFormat);
}

DocumentPropertiesクラスのApplicationVersionプロパティは"xx.yyyy"(xとyは数字)という形式で指定します。また、この値をエクスプローラーやExcelファイル上で確認する方法はありません。

なお、ほとんどの項目は.xlsx形式でも.xls形式でも設定や参照が可能ですが、HyperlinkBase、ContentStatus、HyperlinkBase、Versionは.xls形式で出力する場合はサポートされません。

終わりに

今回紹介した3つの属性を活用することにより、文書管理の工数の削減や、運用業務の効率化が期待できます。製品ヘルプにも機能の詳しい説明がありますのでこちらもご覧ください。

製品ヘルプ:Excelの概要とビューの保存

また、製品WebサイトではSPREAD for Windows Formsの基本機能が試せるデモアプリケーションを公開しています。今回紹介した機能以外にも、Excelライクな業務アプリケーション開発を実現するための機能が多数用意されていますので、以下より是非お試しください。

  • グレープシティ株式会社のDeveloper Tools〈開発支援ツール〉ではエンジニア経験者を幅広く募集しています。
  • グレープシティ株式会社のDeveloper Tools〈開発支援ツール〉の製品のデモアプリケーションをお試しください。