おいちゃんのおぼえがき

仕事のTipsをメモするブログ

VS2008 MFC でエクセル出力

2010-08-05 | Win
VS2008 MFC でエクセルファイル出力
http://support.microsoft.com/kb/308407/ja
1 MFC ダイアログベースアプリ新規作成(オートメーションをチェック)
 ※オートメーションのチェックを忘れたときは、アプリケーションの初期化で
  AfxOleInit() を呼ぶ
2 「追加」->「クラス」で、「TypeLib から MFC のクラス」を選ぶ
3 タイプライブラリで「Microsoft Excel 11.0 Object Library<1.5>」を選ぶ
4 次のインターフェースからクラスを生成
 _Application, _Workbook, _Worksheet, Range, Workbooks, Worksheets
5 下記のコードでエクセル出力

	// エクセルにアタッチ
	CApplication	excel;
	excel.CreateDispatch(_T("Excel.Application"));
	excel.put_UserControl(FALSE);	// ユーザ操作禁止
	excel.put_DisplayAlerts(FALSE);	// 上書きアラートを出さない

	// ブックとシートを用意
	CWorkbooks	wbooks;
	CWorkbook	wbook;
	CWorksheets	wsheets;
	CWorksheet	wsheet;
	// よく使う変数を用意
	COleVariant	covTrue((short)TRUE), 
			covFalse((short)FALSE), 
			covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);

	wbooks = excel.get_Workbooks();
	wbook = wbooks.Add(covOptional);
	wsheets = wbook.get_Worksheets();
	wsheet = wsheets.get_Item(COleVariant((long)1));

	// セルにアクセス
	CRange	cells;
	CRange	cell;
	cells = wsheet.get_Cells();
	cell = cells.get_Item(COleVariant((long)1), 
				COleVariant((long)1)).pdispVal;
	cell.put_Value(COleVariant(), COleVariant(CString(_T("Hello"))));

	// ブックを保存
	wbook.SaveAs(COleVariant(_T("e:sample.xls")), covOptional, covOptional, 
			covOptional, covOptional, covOptional, 0, covOptional, 
			covOptional, covOptional, covOptional, covOptional);

	// 後片付け
	cell.ReleaseDispatch();
	cells.ReleaseDispatch();
	sheet.ReleaseDispatch();
	sheets.ReleaseDispatch();
	book.Close(COleVariant((short)FALSE), covOptional, covOptional);
	books.Close();
	excel.put_UserControl(TRUE);
	excel.Quit();
	excel.ReleaseDispatch();
この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« CTreeCtrlで選択解除状態に | トップ | エクセルに CSV で \"001\" ... »

Win」カテゴリの最新記事