GrapeCity.devlog

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

GrapeCity

開いた時のビューを設定したExcelファイルをDioDocsで作成

グレープシティの開発支援ツールはExcel互換機能を搭載するものが多々あります。
この記事で紹介するDioDocs(ディオドック)以外では、SPREAD(スプレッド)がその代表格で、各種プラットフォームに対応したコンポーネントを提供しています。

SPREAD(スプレッド)ー Windows Forms/WPF/ASP.NET Web Forms/JavaScript | グレープシティ株式会社

そのSPREADを利用し、表示したデータをExcelファイルに保存する際に、属性(Excelファイルのプロパティで確認できる作成者情報など)を設定する手順を解説した記事が公開されています。

Excelファイルを操作するライブラリDioDocs(ディオドック)でも、属性や表示方法を指定できます。
この記事ではDioDocs for Excelを利用して、作成するExcelファイルに属性を設定する方法を解説します。

なお、DioDocsを利用してExcelファイルを作成する方法は別の記事の説明をご覧ください。

ブックの保護機能

DioDocsで作成したExcelファイルを保存する場合、オプションを指定することができます。
XlsxSaveOptionsクラスのPasswordにパスワードを設定して保存することで、Excelファイルが保護されます。

// ワークブックの作成
Workbook workbook = new Workbook();
// ワークシートの取得
IWorksheet worksheet = workbook.ActiveSheet;
// セル範囲を指定して文字列を設定
worksheet.Range["C3"].Value = "Hello World!";

// オプションにパスワードを設定
XlsxSaveOptions options = new XlsxSaveOptions(){Password = "981"};
// オプションを指定してファイルを保存
workbook.Save("Result1.xlsx",options);

パスワード付Excelファイルに保存 *1デモで紹介しています。

ワークブックのビューを指定する

Excelファイルを開いた時の表示スタイルであるビューを指定することができます。
IWorkbookViewインタフェースを使用して以下の設定を組み合わせて指定可能です。

プロパティ 内容
DisplayHorizontalScrollBar 水平スクロールバーを表示/非表示
DisplayVerticalScrollBar 垂直スクロールバーを表示/非表示
DisplayWorkbookTabs ワークブックのタブを表示/非表示
TabRatio ワークブックのタブ領域の幅とウィンドウの水平スクロールバーの幅との比率を
doubleで指定、デフォルト値は0.6

スクロールバーの表示/非表示はわかりますが、TabRatioは文章だとわかりにくいです。
以下はファイル出力用のコードと結果のExcelファイルです。
矢印で示したように、TabRatioの設定値によってタブを表示する領域の比率が変わります。

TabRatio

ワークブックビューの構成*2デモで紹介しています。

ワークシートのビューを指定する

似た名前でややこしいですが、こちらではワークシートのビュー設定を解説します。 Excelファイルを開いたときの各ワークシートの表示方法に関する設定です。

IWorksheetViewインタフェースでは、グリッド線、ヘッダー、ルーラーの表示/非表示など12の項目についてビュー設定を指定するプロパティを提供しています。

プロパティの詳細は製品ヘルプに記載があります。
IWorksheetView インターフェース プロパティ

以下のサンプルコードでは、2つのシートに同じ値を設定していますが、Sheet2のビューではグリッド線を非表示にしています。 また、セルに数式を設定した場合に、表示されるのは計算結果ではなく数式そのものです。

// ワークブックの作成
Workbook workbook = new Workbook();
// ワークシートを1つ追加してそれぞれを取得
workbook.Worksheets.Add();
IWorksheet worksheet = workbook.Worksheets[0];
IWorksheet worksheet2 = workbook.Worksheets[1];
// セル範囲を指定して値、数式を設定
worksheet.Range["C3"].Value = "Hello World!";
worksheet.Range["C4"].Formula = "=LEN(C3)"; 
worksheet.Range["C5"].Value = 0;
// C列の内容をすべてSheet2にコピー
worksheet.Range["C:C"].Copy(worksheet2.Range["C:C"]);

//2つめのワークシートのビューを構成
IWorksheetView sheetView2 = workbook.Worksheets[1].SheetView;
sheetView2.DisplayGridlines = false;  // グリッド線は非表示
sheetView2.DisplayFormulas = true;    // 値ではなく数式を表示
sheetView2.DisplayZeros = false;      // セルの値「0」は非表示           
// ファイルを保存
workbook.Save("Result_SheetView.xlsx");

実行結果のExcelファイルは以下のようになります。上段のSheet1と下段のSheet2では表示が異なります。

ワークシートビュー

ワークシートビューの構成*3デモで紹介しています。

ワークシートの保護

はじめに紹介したのは、パスワードを利用したワークブックの保護です。こちらで紹介するのはワークシート保護、つまりシートごとに追加や更新の許可を設定します。

ワークシートの保護は、WorksheetのProtectionプロパティで制御します。trueを指定した場合に対象のワークシートは保護されます。

具体的な保護の内容は、ProtectionSettingsプロパティに指定します。
ワークシートのProtectionSettingsプロパティで、IProtectionSettingsインタフェースで定義されたワークシートで使用可能なさまざまなタイプの保護オプションを指定します。

指定できるオプションは以下の通りです。

名前 保護されているワークシートに指定するオプション
AllowFormattingCells セルの書式設定を許可
AllowDeletingRows 行の削除を許可
AllowDeletingColumns 列の削除を許可
AllowFormattingRows 行の書式設定を許可
AllowFormattingColumns 列の書式設定を許可
AllowInsertingRows 行の挿入を許可
AllowInsertingColumns 列の挿入を許可
AllowInsertingHyperlinks ハイパーリンクの挿入を許可
AllowSorting ソートオプションを許可
AllowFiltering オートフィルタの利用をユーザーに許可
AllowUsingObjects オブジェクトの利用をユーザーに許可
AllowUsingPivotTables ピボットテーブルの利用をユーザーに許可

以下のコードでは、行の挿入と削除を許可しています。

// ワークシートを保護
worksheet.Protection = true;
// 行と列の追加と削除を許可
worksheet.ProtectionSettings.AllowInsertingRows = true; 
worksheet.ProtectionSettings.AllowDeletingRows = true; 
worksheet.ProtectionSettings.AllowInsertingColumns = true; 
worksheet.ProtectionSettings.AllowDeletingColumns = true; 

下図のように、保護を指定したSheet1のコンテキストメニューでは「削除」「挿入」がグレイアウトされていますが、Sheet2では「削除」ができるようになっています。

ワークシートの保護

ワークシートの保護*4デモで紹介しています。

Excelファイルの仕上げ

このようにDioDocsでは、作成したExcelファイルをユーザーが開いた時の状態について、各種指定が可能です。
シートの内容もスタイルや書式などで各種設定できますが、見た目だけでなく使い勝手の部分でもExcelファイルとして仕上った状態に設定できます。

DioDocs for Excelの機能

各機能は、以下の各デモアプリケーションで体験できます。

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