3流プログラマのメモ書き

元開発職→社内SE→派遣で営業支援→開発戻り浦島太郎状態の三流プログラマのIT技術メモ書き。 このメモが忘れっぽい自分とググってきた技術者の役に立ってくれれば幸いです。

(.Net)C#からExcelへの遅延バインディングで、列幅を調整する

(.Net)C#から遅延バインディングでExcelファイルに読み書きするで、C#からExcelへ遅延バインディングを使ったアクセスを書きましたが、今回は列幅、行高さを変更する方法です。

Rangeオブジェクトの ColumnWidth と、RowHeight で指定できるようです。

例えば、A列の幅を20,1行目の高さを30にするには、こんな感じにします。 (シートオブジェクトまでは生成していることとします。)

//oSheetはシートオブジェクト
object oRange=null;

//A列幅調整
oRange = oSheet.GetType().InvokeMember("Range", BindingFlags.GetProperty, null
    , oSheet, new object[] { "A1", Missing.Value });
oRange.GetType().InvokeMember("ColumnWidth", BindingFlags.SetProperty, null
    , oRange, new object[] { 20 });

//1行目高さ調整
oRange = oSheet.GetType().InvokeMember("Range", BindingFlags.GetProperty, null
    , oSheet, new object[] { "A1", Missing.Value });
oRange.GetType().InvokeMember("RowHeight", BindingFlags.SetProperty, null
    , oRange, new object[] { 30 });

ココで設定する値はピクセル値ではないので、注意しましょう。

参考:
NonSoft - エクセルを操作する小技のサンプル(C#.NET)