SPREAD

ユースケースデモの[実績取込・登録][実績確認][実績分析]画面で使われている印刷やファイル出力といった、複数の形式のエクスポート機能について解説していきます。


プロジェクトをダウンロードする

ClickOnceデモで動作を見る


印刷や複数形式でのエクスポートを用意

データ参照系の画面に多いエンドユーザーの要望として、

  1. 今見ている画面をそのまま印刷したい
  2. 今見ている画面をExcelに出力したい
  3. 今見ている画面をPDFにしたい

があります。SPREADでは印刷はもちろん、Excel出力、PDF出力などが可能です。ユースケースデモでは、[実績取込・登録][実績確認][実績分析]の各画面で目的に見合ったエクスポート機能を搭載しています。

[実績取込・登録]でのPDFエクスポート

[実績取込・登録]画面ではPDFをコンバータ的に使っています。PDF出力機能を利用してCSVデータを取り込む際にデータ内容にエラーがあった場合、エラーの対象データをPDFに出力しています。その際、PDFを出力するSPREADはフォームに貼り付けずコード上でインスタンス化してオンメモリで使用しています。

エラーリストの出力だけならCSVやテキスト形式でも要件は満たせますが、PDFの閲覧性の良さや汎用性は魅力があります。帳票機能のような柔軟性はありませんが、ヘッダやフッタの指定、印刷余白や印刷範囲の指定なども可能です。エンドユーザーから画面に表示したデータを簡易的に外部ファイルに出力してほしいと要望されたときなどにこの機能を利用すると、コストをかけず工数もCSVと同じで、しかもCSVよりも内容を視認しやすいPDFで提供できます。

フローチャート
画像「フローチャート」拡大して見る
取込エラーリストの出力結果
画像「取込エラーリストの出力結果」拡大して見る

以下は、ユースケースデモに実装したPDF出力のコードです。

コード(C#)
// 取込エラーPDF出力用のSPREAD
using (FpSpread spreadpdf = new FpSpread())
{
    using (SheetView sv = new SheetView())
    {
        spreadpdf.Sheets.Add(sv);
        spreadpdf.Sheets[0].DataSource = ds;
        
        // 列幅調整
        spreadpdf.Sheets[0].Columns[0].Width = 100;
        spreadpdf.Sheets[0].Columns[1].Width = 100;
        spreadpdf.Sheets[0].Columns[2].Width = 400;
        spreadpdf.Sheets[0].Columns[3].Width = 380;
        
        // 行番号列をマージ
        spreadpdf.Sheets[0].SetColumnMerge(0, FarPoint.Win.Spread.Model.MergePolicy.Always);
        
        // セル内の余白
        spreadpdf.Sheets[0].Columns[0].CellPadding.Right = 3;
        spreadpdf.Sheets[0].Columns[0].CellPadding.Top = 3;
        spreadpdf.Sheets[0].Columns[1, spreadpdf.Sheets[0].Columns.Count - 1].CellPadding.Left = 3;
        spreadpdf.Sheets[0].Columns[1, spreadpdf.Sheets[0].Columns.Count - 1].CellPadding.Top = 3;
        
        // 印刷情報設定
        PrintInfo pi = new PrintInfo();
        FarPoint.Win.Spread.PrintMargin printmar = new FarPoint.Win.Spread.PrintMargin();
        printmar.Left = 60;
        printmar.Top = 60;
        printmar.Right = 60;
        printmar.Bottom = 0;
        printmar.Header = 25;
        pi.Margin = printmar;
        pi.Orientation = FarPoint.Win.Spread.PrintOrientation.Landscape;
        pi.Header = "/l/fz\"9\"/c/fz\"12\"取込エラーリスト/r/fz\"9\"出力日時:/dl/ts";
        pi.Footer = "/rグレープシティ株式会社";
        pi.ShowColor = true;
        pi.PdfFileName = fn;
        pi.PrintToPdf = true;
        pi.Preview = false;
        spreadpdf.Sheets[0].PrintInfo = pi;
        spreadpdf.PrintSheet(0);
    }
}
コード(VB)
' 取込エラーPDF出力用のSPREAD
Using spreadpdf As New FpSpread()
    Using sv As New SheetView()
        spreadpdf.Sheets.Add(sv)
        spreadpdf.Sheets(0).DataSource = ds
        
        ' 列幅調整
        spreadpdf.Sheets(0).Columns(0).Width = 100
        spreadpdf.Sheets(0).Columns(1).Width = 100
        spreadpdf.Sheets(0).Columns(2).Width = 400
        spreadpdf.Sheets(0).Columns(3).Width = 380
        
        ' 行番号列をマージ
        spreadpdf.Sheets(0).SetColumnMerge(0,
        FarPoint.Win.Spread.Model.MergePolicy.Always)
        
        ' セル内の余白
        spreadpdf.Sheets(0).Columns(0).CellPadding.Right = 3
        spreadpdf.Sheets(0).Columns(0).CellPadding.Top = 3
        spreadpdf.Sheets(0).Columns(1, spreadpdf.Sheets(0).Columns.Count - 1).CellPadding.Left = 3
        spreadpdf.Sheets(0).Columns(1, spreadpdf.Sheets(0).Columns.Count - 1).CellPadding.Top = 3
        
        ' 印刷情報設定
        Dim pi As New PrintInfo()
        Dim printmar As New FarPoint.Win.Spread.PrintMargin()
        printmar.Left = 60
        printmar.Top = 60
        printmar.Right = 60
        printmar.Bottom = 0
        printmar.Header = 25
        pi.Margin = printmar
        pi.Orientation = FarPoint.Win.Spread.PrintOrientation.Landscape
        
        pi.Header = "/l/fz""9""/c/fz""12""取込エラーリスト/r/fz""9""出力日時:/dl/ts"
        pi.Footer = "/rグレープシティ株式会社"
        
        pi.ShowColor = True
        pi.PdfFileName = fn
        pi.PrintToPdf = True
        pi.Preview = False
        spreadpdf.Sheets(0).PrintInfo = pi
        spreadpdf.PrintSheet(0)
 End Using
End Using

[実績確認]画面での複数形式エクスポート

すぐにデータを紙で確認したい時は印刷を、データを加工したい時はExcelを、Microsoft Officeがインストールされていない場合はPDF。このような多くの種類の「口」を用意しておくと、エンドユーザーの選択肢が広がったり、幅広い利用環境に対応したりすることができ、求められている要件の一歩先を行くシステムのプロとしての提案ができます。
[実績取込・登録]画面では、印刷、ExcelおよびPDF出力といった、複数の「口」を用意しています。

フローチャート
画像「フローチャート」拡大して見る

これらを実現することで工数増加が発生しそうですが、SPREADでは容易に対応できます。

コード(C#)
// ●印刷
fpSpread1.PrintSheet(fpSpread1.ActiveSheetIndex);
// ●PDF出力
fpSpread1.ActiveSheet.PrintInfo.PrintToPdf = true;
fpSpread1.PrintSheet(fpSpread1.ActiveSheetIndex);
// ●Excel出力
fpSpread1.SaveExcel("C:¥¥test.xls");
コード(VB)
’ ●印刷
fpSpread1.PrintSheet(fpSpread1.ActiveSheetIndex)
’ ●PDF出力
fpSpread1.ActiveSheet.PrintInfo.PrintToPdf = True
fpSpread1.PrintSheet(fpSpread1.ActiveSheetIndex)
’ ●Excel出力
fpSpread1.SaveExcel("C:¥test.xls")

[実績分析]画面ではExcelエクスポート後もチャートを保持

[実績分析]画面では、Excelと互換性のあるチャートオブジェクトをSPREAD上に表示しています。SPREADで生成したチャートはExcelにエクスポートしても、プロットエリアや目盛、軸、凡例、ラベルといったオブジェクト要素を維持しています。もちろんExcelで作成したチャートをSPREADにインポートしても、チャートオブジェクトとして認識されます。
業務部門ではシステムのデータをExcelにエクスポート後チャートを追加して資料を作成することはよくあります。また、画面をそのままExcelに出力したいというニーズもありますので、ぜひ活用してみてください。

チャートオブジェクトを維持したままExcelにエクスポート
画像「チャートオブジェクトを維持したままExcelにエクスポート」拡大して見る

SpreadChartクラスのRenderImageメソッドを使用することで、SPREAD上に配置しているチャートをビットマップにレンダリングすることも可能です。画像への出力方法は、ナレッジベースで詳しく説明しています。

文書番号:38810 チャート画像をファイルへ保存できますか?


かんたん・多機能・安心のサポート
SPREADで楽々アプリケーション開発

まずは評価版ダウンロードから

今すぐ評価版を無料で入手する


製品・サービスに関する
ご質問・ご相談など、
お気軽にお問合せください。

電話でお問合せ

048-222-3001

(平日 9:00~12:00、13:00~17:30)