SPREAD for Windows Forms 10.0J サンプルコード集
Excelファイルへのエクスポート

FpSpreadクラスのSaveExcelメソッド(オーバーロード形式)呼び出しにより、各シート情報をExcelファイル(xls形式)でエクスポート(出力)させることができます。

但し、当機能はフォーム上のスプレッドシートのデータや書式を元の状態のまま最大限維持して処理することを目的としているため、必ずしもシート上の全ての内容が完全に保存されるとは限りません。例えばSPREADでは各セルに背景画像を設定することができますが、 Excelには同等の機能が存在しないため、結果的に背景画像はエクスポートされません。

このように、SPREADにてExcelファイルを扱う場合には幾つかの制限事項が存在することや、あらかじめその機能仕様を十分に把握しておく必要もあります。詳細については下記「メモ」や、SPREAD上の各設定がどのようにエクスポートされるかについてはインポート/エクスポートリファレンスもあわせてご参照ください。

【実行例】

SPREAD

出力されたExcel形式ファイル(カスタムヘッダを含めたエクスポート例)

Excel

  • 当機能を利用するためにMicrosoft Excel(Office)を別途インストールする必要はありません。
  • 当メソッド呼び出しによって行われるのは、指定したファイル名でのエクスポートのみです。エクスポート完了後の Excelファイル表示や、各種ダイアログ表示等についてはサポートしていません。
  • エクスポートはコントロール上の全てのシートが対象となります。シートの指定やセル範囲の指定を行うことはできません。
  • インポートおよびエクスポートに要する時間は、処理対象となる情報量(シート数、行列数、各セルに設定した罫線や表示色などの属性) に大きく依存します。(コントロール側にて改善する機能はありません)
  • ExcelSaveFlags列挙型の指定により、列または行のカスタムヘッダを含めるかどうかを指定することができます。但しこの場合、カスタムヘッダは 通常のセルとしてエクスポートされます。(Excelにはヘッダラベルを変更する機能が有りません)
  • デフォルトではエクスポートされたExcelファイルに「 シートの保護」が設定されますので、これを無効としたい場合にはあらかじめSheetViewクラスメンバであるProtectプロパティをFalseに変更しておく必要があります。(各シート毎の設定が必要です)
  • SPREADコントロールのVisibleプロパティを明示的にFalseと設定し、SaveExcelメソッド呼び出しによって出力されたExcelファイルを開くとシートが表示されません。これは、 非表示属性についてもExcelシート上に反映させているためです。この場合は、開いたExcelファイル上でのメニュー「ウィンドウ」「再表示」によって表示させることができます。
  • Tabコントロール上にSPREADを貼り付け、Tab切り替えによってSPREADが非表示となった場合や、非表示フォーム上にSPREADを貼り付けた場合でも、コントロールのVisibleプロパティは実行時に 自動的にFalseとなるため、この場合も同様にExcelファイルのシートは非表示となります。
  • 列ヘッダクリックによる自動ソートによって並べ替えが行われるのは 表示上のデータのみです。そのため、並べ替えが行われた状態でExcelファイルへのエクスポートを行った場合、出力されるのはソートの影響を受けない 実データの並びのままとなります。この場合は実データ(データモデル)を直接ソートするSortRangeメソッド(SheetViewクラス)呼び出しを行う必要もあります。(自動フィルタリング機能による行の表示/非表示もExcelファイルには反映されません)
  • シートが階層構造となっている場合、エクスポートされるのは親階層のみとなります。
  • リッチテキスト型セルにおけるリッチテキスト形式データはExcelのセル書式としてエクスポートされません。(文字列データのみエクスポートされます)

 private void Form1_Load(object sender, System.EventArgs e)
 {

   fpSpread1.ActiveSheet.RowCount = 5;
   fpSpread1.ActiveSheet.ColumnCount = 5;
   fpSpread1.ActiveSheet.Rows[0].BackColor = Color.LemonChiffon;
   fpSpread1.ActiveSheet.Rows[1].BackColor = Color.LightCyan;
   fpSpread1.ActiveSheet.Rows[2].BackColor = Color.LightPink;
   fpSpread1.ActiveSheet.Rows[3].BackColor = Color.LightGreen;
   fpSpread1.ActiveSheet.Rows[4].BackColor = Color.LightCoral;

   fpSpread1.ActiveSheet.Rows[0].Label = "行1";
   fpSpread1.ActiveSheet.Rows[1].Label = "行2";
   fpSpread1.ActiveSheet.Rows[2].Label = "行3";
   fpSpread1.ActiveSheet.Rows[3].Label = "行4";
   fpSpread1.ActiveSheet.Rows[4].Label = "行5";

   fpSpread1.ActiveSheet.Columns[0].Label = "列1";
   fpSpread1.ActiveSheet.Columns[1].Label = "列2";
   fpSpread1.ActiveSheet.Columns[2].Label = "列3";
   fpSpread1.ActiveSheet.Columns[3].Label = "列4";
   fpSpread1.ActiveSheet.Columns[4].Label = "列5";

   FarPoint.Win.Spread.Model.CellRange cr = new FarPoint.Win.Spread.Model.CellRange(1, 1, 3, 3);
   fpSpread1.ActiveSheet.SetOutlineBorder(cr, new FarPoint.Win.LineBorder(Color.Blue, 2));

   fpSpread1.ActiveSheet.Columns[0].Font = new Font("Arial", 12, FontStyle.Bold | FontStyle.Italic);
   fpSpread1.ActiveSheet.Columns[0].ForeColor = Color.Blue;
   fpSpread1.ActiveSheet.Columns[0].CellType = new FarPoint.Win.Spread.CellType.TextCellType();
   fpSpread1.ActiveSheet.SetText(0, 0, "Excel");
   fpSpread1.ActiveSheet.AddSpanCell(4, 0, 1, 2);
   fpSpread1.ActiveSheet.SetText(4, 0, "SPREAD for .NET");

   fpSpread1.ActiveSheet.Columns[1].CellType = new FarPoint.Win.Spread.CellType.DateTimeCellType();
   fpSpread1.ActiveSheet.SetColumnWidth(1, 90);
   fpSpread1.ActiveSheet.AddSpanCell(1, 1, 2, 1);
   fpSpread1.ActiveSheet.SetValue(1, 1, new DateTime(2015, 6, 15));

   FarPoint.Win.Spread.CellType.NumberCellType n = new FarPoint.Win.Spread.CellType.NumberCellType();
   n.DecimalPlaces = 4;
   fpSpread1.ActiveSheet.Columns[2].CellType = n;
   fpSpread1.ActiveSheet.SetValue(2, 2, 123.45);

   fpSpread1.ActiveSheet.Columns[3].CellType = new FarPoint.Win.Spread.CellType.CheckBoxCellType();
   fpSpread1.ActiveSheet.SetValue(3, 3, true);

   FarPoint.Win.Spread.CellType.ComboBoxCellType c = new FarPoint.Win.Spread.CellType.ComboBoxCellType();
   c.Items = new String[] {"aaa", "bbb", "ccc"};
   c.EditorValue = FarPoint.Win.Spread.CellType.EditorValue.Index;
   fpSpread1.ActiveSheet.Columns[4].CellType = c;
   fpSpread1.ActiveSheet.SetValue(4, 4, 1);

   fpSpread1.ActiveSheet.SheetName = "エクスポートされたシート";

 }

 private void button1_Click(object sender, System.EventArgs e)
 {

   //xls形式ファイルをカスタム列/行ヘッダを含めてエクスポートします
   fpSpread1.SaveExcel("保存ファイルパス名.xls", FarPoint.Excel.ExcelSaveFlags.SaveBothCustomRowAndColumnHeaders);

 } 
 Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load

   FpSpread1.ActiveSheet.RowCount = 5
   FpSpread1.ActiveSheet.ColumnCount = 5
   FpSpread1.ActiveSheet.Rows(0).BackColor = Color.LemonChiffon
   FpSpread1.ActiveSheet.Rows(1).BackColor = Color.LightCyan
   FpSpread1.ActiveSheet.Rows(2).BackColor = Color.LightPink
   FpSpread1.ActiveSheet.Rows(3).BackColor = Color.LightGreen
   FpSpread1.ActiveSheet.Rows(4).BackColor = Color.LightCoral

   FpSpread1.ActiveSheet.Rows(0).Label = "行1"
   FpSpread1.ActiveSheet.Rows(1).Label = "行2"
   FpSpread1.ActiveSheet.Rows(2).Label = "行3"
   FpSpread1.ActiveSheet.Rows(3).Label = "行4"
   FpSpread1.ActiveSheet.Rows(4).Label = "行5"

   FpSpread1.ActiveSheet.Columns(0).Label = "列1"
   FpSpread1.ActiveSheet.Columns(1).Label = "列2"
   FpSpread1.ActiveSheet.Columns(2).Label = "列3"
   FpSpread1.ActiveSheet.Columns(3).Label = "列4"
   FpSpread1.ActiveSheet.Columns(4).Label = "列5"

   Dim cr As New FarPoint.Win.Spread.Model.CellRange(1, 1, 3, 3)
   FpSpread1.ActiveSheet.SetOutlineBorder(cr, New FarPoint.Win.LineBorder(Color.Blue, 2))

   FpSpread1.ActiveSheet.Columns(0).Font = New Font("Arial", 12, FontStyle.Bold Or FontStyle.Italic)
   FpSpread1.ActiveSheet.Columns(0).ForeColor = Color.Blue
   FpSpread1.ActiveSheet.Columns(0).CellType = New FarPoint.Win.Spread.CellType.TextCellType
   FpSpread1.ActiveSheet.SetText(0, 0, "Excel")
   FpSpread1.ActiveSheet.AddSpanCell(4, 0, 1, 2)
   FpSpread1.ActiveSheet.SetText(4, 0, "SPREAD for .NET")

   FpSpread1.ActiveSheet.Columns(1).CellType = New FarPoint.Win.Spread.CellType.DateTimeCellType
   FpSpread1.ActiveSheet.SetColumnWidth(1, 90)
   FpSpread1.ActiveSheet.AddSpanCell(1, 1, 2, 1)
   FpSpread1.ActiveSheet.SetValue(1, 1, New DateTime(2015, 6, 15))

   Dim n As New FarPoint.Win.Spread.CellType.NumberCellType
   n.DecimalPlaces = 4
   FpSpread1.ActiveSheet.Columns(2).CellType = n
   FpSpread1.ActiveSheet.SetValue(2, 2, 123.45)

   FpSpread1.ActiveSheet.Columns(3).CellType = New FarPoint.Win.Spread.CellType.CheckBoxCellType
   FpSpread1.ActiveSheet.SetValue(3, 3, True)

   Dim c As New FarPoint.Win.Spread.CellType.ComboBoxCellType
   c.Items = New String() {"aaa", "bbb", "ccc"}
   c.EditorValue = FarPoint.Win.Spread.CellType.EditorValue.Index
   FpSpread1.ActiveSheet.Columns(4).CellType = c
   FpSpread1.ActiveSheet.SetValue(4, 4, 1)

   FpSpread1.ActiveSheet.SheetName = "エクスポートされたシート"

 End Sub

 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

   'xls形式ファイルをカスタム列/行ヘッダを含めてエクスポートします
   FpSpread1.SaveExcel("保存ファイルパス名.xls", FarPoint.Excel.ExcelSaveFlags.SaveBothCustomRowAndColumnHeaders)

 End Sub 

 

 


© 2004-2017, GrapeCity inc. All rights reserved.