
【技術部】[C++] C++でのExcel操作まとめ

※カテゴリー【技術部】は技術者向けの記事となります。
![]() |
C++でのExcelファイルの操作についてまとめました。 |
【目次】
■ Excel起動
■ Excelファイルを開く
■ 指定のシートを取得
■ セルの取得 [ 単一指定 ]
■ セルの取得 [ 範囲指定 ]
■ セルに値を入力する
■ 罫線を引く
■ セルの背景色を設定
■ Excelファイル保存
■ Excelを閉じる
Excel起動
Excel::_ApplicationPtr excel; excel.CreateInstance( "Excel.Application" ); excel->Visible = VARIANT_TRUE; excel->DisplayAlerts = false;
Excelファイルを開く
Excel::WorkbooksPtr work_books = excel->GetWorkbooks(); Excel::_WorkbookPtr work_book = work_books->Open( "Excelファイルパス" );
指定のシートを取得
Excel::_WorksheetPtr work_sheet; work_sheet = work_book->GetWorkSheets()->GetItem( _variant(1) );
セルの取得 [ 単一指定 ]
Excel::RangePtr range = work_sheet->Cells->Item[ 1 ][ 1 ];※ 1行目 1列目のセルを取得。
セルの取得 [ 範囲指定 ]
Excel::RangePtr range = work_sheet->GetRange( work_sheet->Cells->Item[ 1 ][ 1 ], work_sheet->Cells->Item[ 5 ][ 5 ] );※ 1行目 1列目のセルから5行目 5列目のセルを範囲指定で取得。
セルに値を入力する
range->Value2 = "文字列";
罫線を引く
Excel::BorderPtr border; border = range->GetBorders()->GetItem( Excel::xlEdgeTop ); border->PutLineStyle( Excel::xlContinuous ); border->PutWeight( Excel::xlMedium );【 罫線の位置 】 Excel::xlEdgeTop ・・・・ 上辺 Excel::xlEdgeBottom ・・・ 下辺 Excel::xlEdgeRight ・・・ 右辺 Excel::xlEdgeLeft ・・・ 左辺 【 罫線の種類 】 Excel::xlContinuous ・・・ 実線 Excel::xlDot ・・・ 点線 Excel::xlDouble ・・・ 二重線 Excel::xlLineStyleNone ・・・ 無し 【 罫線の太さ 】 Excel::xlThin ・・・ 通常 Excel::xlMedium ・・・ 太線 Excel::xlThick ・・・ 極太
セルの背景色を設定
range->Interior->Color = RGB( 255, 0, 0 );
Excelファイル保存
work_book->Save();
Excelを閉じる
work_book->Close(); excel->Quit();ご質問、ご意見等ありましたら下記コメントにご投稿お願いいたします。
- 関連記事
- この記事へのリアクション
コメントの投稿
C++でExcelファイルのシートのコピーの方法は分かりますか?
コメントありがとうございます。
現在、手元にC++の実行環境が用意できておらず、未検証なコードとなってしまいますがご提案いたします。
以下のコードをお試しいただけますでしょうか。
Excel::_WorksheetPtr work_sheet;
work_sheet = work_book->GetWorkSheets()->GetItem(_variant(1));
work_sheet->Copy(vtMissing,work_sheet);
一番先頭のシートが右側にコピーされると思います。
左側にコピーする場合は、
work_sheet->Copy(work_sheet,vtMissing);
となります。
現在、手元にC++の実行環境が用意できておらず、未検証なコードとなってしまいますがご提案いたします。
以下のコードをお試しいただけますでしょうか。
Excel::_WorksheetPtr work_sheet;
work_sheet = work_book->GetWorkSheets()->GetItem(_variant(1));
work_sheet->Copy(vtMissing,work_sheet);
一番先頭のシートが右側にコピーされると思います。
左側にコピーする場合は、
work_sheet->Copy(work_sheet,vtMissing);
となります。
タグ:技術部C++Excel操作