SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

ComponentZine(ComponentOne)(AD)

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

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

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といった他の形式での出力が可能になる点もポイントです。

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
ComponentZine(ComponentOne)連載記事一覧

もっと読む

この記事の著者

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

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

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/10002 2017/03/03 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング