
 E
Excel のようなスプレッドシートを使いたければ、それこそ Excel とか OpenOffice.org Calc を使えば良いのですが、GUI アプリケーションでちょっとしたスプレッドシートを使いたい時があります。
DataGridView コントロールを利用した例を [1] で見つけたので、それを少し加工したサンプル 
DataGridViewTest.cs を紹介します。
///////////////////////////////////////////////////////////////////////////////
//  DataGridViewTest.cs - DataGridView コントロールを使ったサンプル
//
//  参考/引用: 
//  Koders Code Search: Test.cs - C#
//  modified by Fuhito Suguri, 7-Aug-2010
///////////////////////////////////////////////////////////////////////////////
using System;
using System.Windows.Forms;
using System.Drawing;
//
namespace bitWalk
{
  public class Program
  {
    public static void Main (string[] args) {
      DataGridViewTest p = new DataGridViewTest();
      p.SampleDataShow();
      Application.Run(p);
    }
  }
  //
  public class DataGridViewTest : Form {
    DataGridView myDataGridView;
    /////////////////////////////////////////////////////////////////////////////
    // DataGridViewTest constructor
    public DataGridViewTest () {
      this.Width  = 400;
      this.Height = 200;
      this.Text = "DataGridViewTest";
      //
      this.Closed += OnClosed;
      //
      myDataGridView = new DataGridView();
      myDataGridView.ColumnCount = 5;
      //
      DataGridViewCellStyle style1 = myDataGridView.ColumnHeadersDefaultCellStyle;
      style1.BackColor = Color.Navy;
      style1.ForeColor = Color.White;
      style1.Font = new Font(myDataGridView.Font, FontStyle.Bold);
      //
      DataGridViewCellStyle style2 = new DataGridViewCellStyle();
      style2.BackColor = Color.Beige;
      style2.ForeColor = Color.Brown;
      style2.Font = new Font("Arial", 8);
      myDataGridView.AlternatingRowsDefaultCellStyle = style2;
      //
      myDataGridView.EditMode = DataGridViewEditMode.EditOnEnter;
      myDataGridView.Name = "myDataGridView";
      myDataGridView.AutoSizeRowsMode =
        DataGridViewAutoSizeRowsMode.DisplayedCellsExceptHeaders;
      myDataGridView.ColumnHeadersBorderStyle =
        DataGridViewHeaderBorderStyle.Raised;
      myDataGridView.CellBorderStyle = DataGridViewCellBorderStyle.Single;
      myDataGridView.GridColor = SystemColors.ActiveBorder;
      myDataGridView.Columns[0].Name = "リリース日";
      myDataGridView.Columns[1].Name = "トラック";
      myDataGridView.Columns[1].DefaultCellStyle.Alignment =
        DataGridViewContentAlignment.MiddleCenter;
      myDataGridView.Columns[2].Name = "タイトル";
      myDataGridView.Columns[3].Name = "アーティスト";
      myDataGridView.Columns[4].Name = "アルバム";
      myDataGridView.Columns[4].DefaultCellStyle.Font =
        new Font(DataGridView.DefaultFont, FontStyle.Italic);
      myDataGridView.SelectionMode = DataGridViewSelectionMode.FullRowSelect; 
      myDataGridView.MultiSelect = false;
      myDataGridView.BackgroundColor = Color.Honeydew;
      myDataGridView.Dock = DockStyle.Fill;
      myDataGridView.CellFormatting +=
        new DataGridViewCellFormattingEventHandler(MyDataGridViewCellFormatting);
      myDataGridView.CellParsing +=
        new DataGridViewCellParsingEventHandler(MyDataGridViewCellParsing);
      myDataGridView.CellValidating +=
        new DataGridViewCellValidatingEventHandler(MyDataGridViewCellValidating);
      this.Controls.Add(myDataGridView);
      //
      DataGridViewColumnCollection columns = this.myDataGridView.Columns;
      columns[0].DisplayIndex = 3;
      columns[1].DisplayIndex = 4;
      columns[2].DisplayIndex = 0;
      columns[3].DisplayIndex = 1;
      columns[4].DisplayIndex = 2;
    }
    // Populating the DataGrid
    public void SampleDataShow () {
      DataGridViewRowCollection rows = this.myDataGridView.Rows;
      rows.Add(new string[] {"11/22/1968", "29", "Revolution 9", "Beatles", "The Beatles [White Album]"});
      rows.Add(new string[] {"4/4/1960", "6", "Fools Rush In", "Frank Sinatra", "Nice 'N' Easy"});
      rows.Add(new string[] {"11/11/1971", "1", "One of These Days", "Pink Floyd", "Meddle"});
      rows.Add(new string[] {"4/4/1988", "7", "Where Is MY Mind?", "Pixies", "Surfer Rosa"});
      rows.Add(new string[] {"5/1981", "9", "Can't Find My Mind", "Cramps", "Psychedelic Jungle"});
      rows.Add(new string[] {"6/10/2003", "13", "Scatterbrain. (As Dead As Leaves.)", "Radiohead", "Hail to the Thief"});
      rows.Add(new string[] {"6/30/1992", "3", "Dress", "P J Harvey", "Dry"});
    }
    //
    void MyDataGridViewCellValidating (object sender, EventArgs args) {
    }
    //
    void MyDataGridViewCellParsing (object sender, EventArgs args) {
    }
    //
    void MyDataGridViewCellFormatting (object sender, EventArgs args) {
    }
    //
    void OnClosed (object o, EventArgs e) {
      Console.WriteLine("Closed!");
      Application.Exit();
    }
  }
}
// END PROGRAM
Fedora 上でのビルド、および実行は次のようにします。
$ gmcs -pkg:dotnet -target:winexe DataGridViewTest.cs
$ mono DataGridViewTest.exe &

Windows XP へ 
DataGridViewTest.exe をコピーして、(ダブルクリックして)実行した結果を以下に示しました。

アプリケーションで使用するスプレッドシートでも、Excel の機能すべてが必要ではありませんが、それでも、ほとんどの場合で必要になる共通な基本機能があります。これらを用意してある程度汎用性があるクラスを用意しておけば、利用価値が高くなります。
参考サイト
[1] 
Koders Code Search: Test.cs - C#