Hatena::ブログ(Diary)

Architect Life このページをアンテナに追加 RSSフィード

2008-01-21

LINQ to Excel を作ってみる その1

いまいち、まだLINQの仕組みがよくわからない。whereやselectなどの演算子が対応する拡張メソッドにマップされたりするのはわかるけど、その式がどうやって(どこで?)SQLやらXPath(かどうかは知らないけど)やらに変換されているのかがわからない。

じゃあ理解するために自分でもLINQ to 「****」を作ってみたらいいんじゃね?

ということで、身近なところでExcelワークブックやセルに対してクエリを掛けられる「LINQ to Excel」を作ってみる事にした。

イメージとしては、

指定した文字列が含まれるシートを列挙する
XlsWorkbook book = new XlsWorkbook("100.xls");

var sheets = from s in book.Worksheets
             where s.Name.Contains("hoge")
             select s;

foreach(var sheet in sheets) Console.WriteLine(sheet.Name);
シートから指定した文字列が含まれているセルを列挙する
XlsWorkbook book = new XlsWorkbook("100.xls");
// 全セルを対象
var cells = from c in book.Worksheets[0].Cells
            where c.Text.Contains("hoge")
            select s
シートから指定した範囲内のデータを読み出して一行ずつ列挙する
XlsWorkbook book = new XlsWorkbook("customer.xls");
// 開始行番号、開始列番号、終了列番号
var objs = from row in book.Worksheets[0].EachRows(4, 2, 3)
           where !row[0].IsEmpty    // この条件がtrueの行まで列挙する
           select new {
               ID=row[0].Value<int>(),
               Name=row[1].Text
           }
  • データ

f:id:coma2n:20080121204600p:image

意味のある機能かどうかは別として、おもしろそうなので作ってみる。

目次

  1. LINQ to Excel を作ってみる その1 - Architect Life
  2. LINQ to Excel を作ってみる その2 - Architect Life
  3. LINQ to Excel を作ってみる その3 - Architect Life
  4. LINQ to Excel を作ってみる その4 - Architect Life

p-nixp-nix 2008/01/21 21:28 はじめまして、理解するためにLINQ to Excel を作ってみよう、って凄いですね。
期待しています。

coma2ncoma2n 2008/01/21 21:43 わーーー!?そんなたいしたものは作れないので、あまり期待はしないでくださいね。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/coma2n/20080121/1200917603