トップ回答者
C#からエクセルのセルを結合し、斜線を描きたい。

質問
回答
-
アセンブリ Infragisticsxxx.Documents.Excel (xxxの部分は製品により異なる) がプロジェクトの参照設定に追加されているでしょうか?
またInfragisticsxxx.Documents.Excel はInfragistics 社が開発しているExcel操作用のライブラリです。Infragistics Professional もしくは同 Ultimate に同梱されていますが、すでに購入済みでしょうか?もし購入されていない場合、有償製品なのでライセンスを購入する必要があります。
ひらぽん http://d.hatena.ne.jp/hilapon/
- 回答としてマーク MitsuoTAKEI 2014年3月14日 1:41
-
COM参照という方法を使うと特にライブラリを入れることなく操作することはできます。
作ったアプリケーションを配布する際は開発環境と実行環境とでインストールされているExcelのバージョンなどに注意しないといけないかと思います。環境がないので、Windows8.1上のVisual Studio 2013からExcel2013を操作したコードをのせておきます。
プロジェクトで「コンソールアプリケーション」を作成し、プロジェクトの参照設定を右クリックして「参照の追加」を選び、COMのタイプライブラリから「Excel XX Object Library」というものを選択してOKを押してください。(XXはバージョン)そのうえで下記のコードを実行すると、A1とA2セルが結合され、斜線が追加されるはずです。なお、この際Excelが立ち上がりますが表示はされません。
using Microsoft.Office.Interop.Excel; namespace ExcelApp { class Program { static void Main(string[] args) { var fileName = @"C:\tmp\test.xlsx"; //Excelを起動するが表示はしない var app = new Application {Visible = false}; var wb = app.Workbooks.Open(fileName); //シートをインデックスで参照。1から始まる ((Worksheet)wb.Sheets[1]).Select(); //セルA1とA2の範囲を取得 var range = app.Range["A1", "A2"]; if (range != null) { //結合する range.Cells.Merge(); //斜線を引く var border = range.Borders[XlBordersIndex.xlDiagonalDown]; border.Weight = XlBorderWeight.xlThin; border.LineStyle = XlLineStyle.xlContinuous; } wb.Close(true); app.Quit(); } } }
より詳細な情報は
.NET TIPS Excelファイルにアクセスするには?[C#、VB]
などをご覧になるのがいいかと思います。
- 編集済み tanaka_733MVP 2014年3月14日 2:14
- 回答としてマーク MitsuoTAKEI 2014年3月14日 6:24
すべての返信
-
アセンブリ Infragisticsxxx.Documents.Excel (xxxの部分は製品により異なる) がプロジェクトの参照設定に追加されているでしょうか?
またInfragisticsxxx.Documents.Excel はInfragistics 社が開発しているExcel操作用のライブラリです。Infragistics Professional もしくは同 Ultimate に同梱されていますが、すでに購入済みでしょうか?もし購入されていない場合、有償製品なのでライセンスを購入する必要があります。
ひらぽん http://d.hatena.ne.jp/hilapon/
- 回答としてマーク MitsuoTAKEI 2014年3月14日 1:41
-
ひらぽん様
ご回答ありがとうございました。
>Infragisticsxxx.Documents.Excel はInfragistics 社が開発しているExcel操作用のライブラリです。
やはり、有償ソフトでしたか。
これらのライブラリを使わず、セルの結合は出来ないのでしょうか?
-
COM参照という方法を使うと特にライブラリを入れることなく操作することはできます。
作ったアプリケーションを配布する際は開発環境と実行環境とでインストールされているExcelのバージョンなどに注意しないといけないかと思います。環境がないので、Windows8.1上のVisual Studio 2013からExcel2013を操作したコードをのせておきます。
プロジェクトで「コンソールアプリケーション」を作成し、プロジェクトの参照設定を右クリックして「参照の追加」を選び、COMのタイプライブラリから「Excel XX Object Library」というものを選択してOKを押してください。(XXはバージョン)そのうえで下記のコードを実行すると、A1とA2セルが結合され、斜線が追加されるはずです。なお、この際Excelが立ち上がりますが表示はされません。
using Microsoft.Office.Interop.Excel; namespace ExcelApp { class Program { static void Main(string[] args) { var fileName = @"C:\tmp\test.xlsx"; //Excelを起動するが表示はしない var app = new Application {Visible = false}; var wb = app.Workbooks.Open(fileName); //シートをインデックスで参照。1から始まる ((Worksheet)wb.Sheets[1]).Select(); //セルA1とA2の範囲を取得 var range = app.Range["A1", "A2"]; if (range != null) { //結合する range.Cells.Merge(); //斜線を引く var border = range.Borders[XlBordersIndex.xlDiagonalDown]; border.Weight = XlBorderWeight.xlThin; border.LineStyle = XlLineStyle.xlContinuous; } wb.Close(true); app.Quit(); } } }
より詳細な情報は
.NET TIPS Excelファイルにアクセスするには?[C#、VB]
などをご覧になるのがいいかと思います。
- 編集済み tanaka_733MVP 2014年3月14日 2:14
- 回答としてマーク MitsuoTAKEI 2014年3月14日 6:24