Shoeisha Technology Media

CodeZine(コードジン)

記事種別から探す

ComponentOne Studio for WPFでアプリケーションからExcelを取り扱う

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2017/03/03 14:00
目次

Excel形式のファイルを読み込む

 既存のExcelファイルを読み込んで編集する方法を紹介します。

 以下のサンプルは、これまでのサンプルコードで作成してきたexcel.xlsファイルがドキュメントフォルダーに存在することを想定しています。

既存のExcelファイルを編集する
public MainWindow()
{
    InitializeComponent();

    C1XLBook book = new C1XLBook();

    // ファイルを読み込む
    book.Load(@"C:\<ドキュメントフォルダのパス>\excel.xls");

    // シートを編集する
    book.Sheets[0][0, 0].Value = 5;

    // 別名で保存する
    book.Save(@"C:\<ドキュメントフォルダのパス>\excel2.xls");
}

 既存ファイルの読み込みもC1XLBookクラスで扱うため、ファイルの生成と同様の使い方で処理が記述できます。

 生成したファイルを規定のプログラムで開きたい場合は以下のように記述します。

ファイルを規定のプログラムで開く
System.Diagnostics.Process.Start(@"C:\<ドキュメントフォルダのパス>\excel.xls");

読み込んだExcelデータとその他コンポーネントを組み合わせる

 C1XLBookクラスに読み込んだExcelファイルのデータは、中身を取り出してFlexGridコントロールに表示することができます。

ExcelのデータをFlexGridコントロールに表示する
C1XLBook book = new C1XLBook();

// ファイルを読み込む
book.Load(@"C:\Users\macni\Documents\mybook.xls");

// シートを編集する
book.Sheets[0][0, 0].Value = 5;

// データをFlexGrid用に加工する
List<int> list = new List<int>();

list.Add(Convert.ToInt32(book.Sheets[0][0, 0].Value));
list.Add(Convert.ToInt32(book.Sheets[0][0, 1].Value));
list.Add(Convert.ToInt32(book.Sheets[0][0, 2].Value));

// FlexGridで表示する
FlexGrid.ItemsSource = list;

 さらにFlexGridを、RenderTargetBitmapクラスを利用して画像化することで、C1Pdfコンポーネントを用いてPDFとして保存したり、C1WordコンポーネントでWord形式で保存したりすることが可能になります。

 以下にRenderTargetBitmapで画像にするコードを紹介します。PDFやWord形式にしたい場合は、「ComponentOne Studio for WPFでアプリケーションからWord、PDFを取り扱う」などを参考にして置き換えてください。

FlexGridコントロールを画像化する
if (!Double.IsNaN(FlexGrid.Width))
{
    var size = new System.Windows.Size(FlexGrid.Width, FlexGrid.Height);
    FlexGrid.Measure(size);
    FlexGrid.Arrange(new Rect(size));

    // RenderTargetBitmapでFlexGridをBitMapに変換する
    var renderBitmap = new RenderTargetBitmap((int)size.Width, (int)size.Height, 96.0d, 96.0d, PixelFormats.Pbgra32);
    renderBitmap.Render(FlexGrid);

    // Imageコントロールに表示する
    // C1PdfやC1Wordを利用して保存することも可能
    image.Source = BitmapFrame.Create(renderBitmap);
}
読み込んだExcelをFlexGridに表示する
読み込んだExcelをFlexGridに表示する

まとめ

 ComponentOne Studio for WPFで利用可能なC1Excelを用いて、Excelファイルを簡単に扱う方法を紹介しました。業務で頻繁に利用されるExcelファイルをアプリケーションで利用できるC1Excelコンポーネントを知っておくと、仕様策定の際により業務で使いやすいアプリケーションを作成することができるケースがあると思います。

 また、C1PdfやC1Word、FlexGridといったComponentOne Studio for WPFのその他コンポーネントと組み合わせることで、PDFやWordといった他の形式での出力が可能になる点もポイントです。



  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

  • 西村 誠(ニシムラ マコト)

     Microsoft MVP Windows Platform Development。  Flash、PHPの開発経験もあり国産ECサイト構築フレームワーク「EC-CUBE」の公式エバンジェリストでもある。  ブログ:眠るシーラカンスと水底のプログラマー  著書:基礎から学ぶ Windows...

バックナンバー

連載:ComponentZine(ComponentOne Studio)

もっと読む

All contents copyright © 2005-2017 Shoeisha Co., Ltd. All rights reserved. ver.1.5