C#からExcelを操作する(PIAその2)

C#からExcelを操作する方法、前回はWorkSheetの取得までを見てきました。今回はExcel操作の1つ1つについて確認しておきたいと思います。いずれもプロパティの全てを確認することは到底できませんが、関連するクラスを調べていけば所望のプログラムができるかと思います。

ここでは前回のプログラムを引き続き使います。操作FormにWorkSheetオブジェクトは取得できたとして、それらに追加のイベントハンドラを用意する形で個々の操作を見ていきます。見ていく操作は以下になります。

  1. セルにテキストを設定する
  2. セルに数値を設定する
  3. セルに数式を設定する
  4. セルの領域境界に線を引く
  5. チャート(グラフ,表)を挿入する
  6. セルを結合する
  7. セルのフォントを設定する
  8. セルのテキストアライメントを設定する
  9. オートシェイプを挿入する
  10. ハイパーリンクを設定する

 

1.セルにテキストを設定する

セルに文字を設定する方法は前回も出てきましたがこちら。

/// <summary>
/// テキストの設定
/// </summary>
private void setTextButton_Click(object sender, EventArgs e)
{
    xlSheet.Cells[1, 1] = "C#からExcel操作";
    xlSheet.Cells[2, 3] = "GROUP1";
    xlSheet.Cells[2, 4] = "GROUP2";
    xlSheet.Cells[13, 2] = "Sum";
    xlSheet.Cells[15, 2] = "Link";
}

set_text

 

2.セルに数値を設定する

数値を設定する場合もテキストと同じです。

/// <summary>
/// 数値の設定
/// </summary>
private void setNumButton_Click(object sender, EventArgs e)
{
    var random = new Random();
    for (int i = 0; i < 10; i++)
    {
        xlSheet.Cells[i + 3, 2] = i + 1;
        xlSheet.Cells[i + 3, 3] = random.Next(1000);
        xlSheet.Cells[i + 3, 4] = random.Next(1000);
    }
}

set_num

 

3.セルに数式を設定する

数式も同じ。セルの値が変わると自動的に更新されます。

/// <summary>
/// 数式の設定
/// </summary>
private void setFormulaButton_Click(object sender, EventArgs e)
{
    xlSheet.Cells[13, 3] = @"=sum(C3:C12)";
    xlSheet.Cells[13, 4] = @"=sum(D3:D12)";
}

set_formula

 

4.セルの領域境界に線を引く

セルの領域境界に線を引くには範囲を指定してRangeオブジェクトを取得します。

/// <summary>
/// セル境界線の設定
/// </summary>
private void setCellBorderButton_Click(object sender, EventArgs e)
{
    var borderRegion = xlSheet.get_Range("B2", "D13");
    borderRegion.BorderAround();
}

set_range

 

5.チャート(グラフ,表)を挿入する

/// <summary>
/// チャート挿入
/// </summary>
private void insertChartButton_Click(object sender, EventArgs e)
{
    var chart = xlSheet.ChartObjects().Add(250, 20, 300, 250);
    var chartPage = chart.Chart;
    var chartRange = xlSheet.get_Range("C2", "D12");
    chartPage.SetSourceData(chartRange);
    chartPage.ChartType = Excel.XlChartType.xlColumnClustered; 
}

set_chart

 

6.セルを結合する

セルの結合もRangeオブジェクトを取得して行います。

/// <summary>
/// セルのマージ
/// </summary>
private void mergeCellButton_Click(object sender, EventArgs e)
{
    var mergeRange = xlSheet.get_Range("A1", "D1");
    mergeRange.Merge();
}

merge_cell

 

7.セルのフォントを設定する

セルのフォントはセル全体か、セルの一部かで方法が異なります。

/// <summary>
/// フォントの設定
/// </summary>
private void setFontButton_Click(object sender, EventArgs e)
{
    // Cell全体にはFontプロパティ
    xlSheet.Cells[1, 1].Font.Size = 15;
    xlSheet.Cells[1, 1].Font.Bold = true;
    xlSheet.Cells[1, 1].Font.Underline = Excel.XlUnderlineStyle.xlUnderlineStyleDouble;
    xlSheet.Cells[13, 2].Font.OutlineFont = true;

    // Cellの一部にはCharacters
    xlSheet.Cells[1, 1].Characters[1, 2].Font.Color = 255; /* Red */
}

set_font

 

8.セルのテキストアライメントを設定する

/// <summary>
/// アライメントの設定
/// </summary>
private void setAlignmentButton_Click(object sender, EventArgs e)
{
    xlSheet.Cells[1, 1].HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;
}

set_alignment

 

9.オートシェイプを挿入する

これも前回すこし出てきた内容です。

/// <summary>
/// オートシェイプの挿入
/// </summary>
private void setShapeButton_Click(object sender, EventArgs e)
{
    // 線
    xlSheet.Shapes.AddLine(150, 200, 150, 250);
    // 画像
    xlSheet.Shapes.AddPicture(@"C:\Users\Public\Pictures\Sample Pictures\Lighthouse.jpg",
        Microsoft.Office.Core.MsoTriState.msoTrue,
        Microsoft.Office.Core.MsoTriState.msoTrue,
        100, 250, 100, 100);
}

set_autoshape

 

10.ハイパーリンクを設定する

/// <summary>
/// ハイパーリンクの設定
/// </summary>
private void setHyperLinkButton_Click(object sender, EventArgs e)
{
    xlSheet.Hyperlinks.Add(xlSheet.Cells[15, 2], "https://tocsworld.wordpress.com");
}

set_link

 

ここまで独立して見てきましたが、これらをすべて実行すると以下のようになります。

do_all

今回紹介したのはOfficeのPIAというCOMベースの機能です。Officeには他にもVSTOを使ったものもありますがそちらはまた今度。

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中