VC++

  StdAfx.h



  
#import "c:\Program Files\Common Files\System\ADO\msado15.dll" \
    no_namespace rename("EOF", "EndOfFile")

#include <windows.h>
#include <ole2.h>
#include <stdio.h>
#include <oleauto.h>
#include <conio.h>
  




  ADO + Excel ( バッチ )



  
#include "stdafx.h"

// **********************************************************
// オブジェクト使用宣言
// **********************************************************
_ConnectionPtr pCn = NULL;
_RecordsetPtr pRs = NULL;

// **********************************************************
// インスタンス作成用
// **********************************************************
inline void TESTHR(HRESULT x) {if FAILED(x) _com_issue_error(x);};

// **********************************************************
// 関数宣言
// **********************************************************
BOOL ProviderError( _RecordsetPtr pRsTarget );

int main(int argc, char* argv[])
{
// **********************************************************
// COM 使用初期化
// **********************************************************
	CoInitialize(NULL);

// **********************************************************
// ターゲット Excel
// **********************************************************
	_bstr_t Target( "C:\\TEMP\\社員マスタ.xls" );

// **********************************************************
// ワーク
// **********************************************************
	_bstr_t Buffer;
	_bstr_t Work;
	_variant_t Query;
	_variant_t vValue;
	_variant_t nIndex;
	nIndex.vt = VT_I2;
	FILE *Csv;
	int i,nErr;

// **********************************************************
// 接続文字列
// **********************************************************
	_bstr_t ConnectString("Provider=Microsoft.Jet.OLEDB.4.0;");
	ConnectString.operator += ( "Data Source=" );
	ConnectString.operator += ( Target );
	ConnectString.operator += ( ";" );
	ConnectString.operator += ( "Extended Properties=\"Excel 8.0;\"" );

	nErr = 0;
	try {
		// *******************************
		// オブジェクト作成
		// *******************************
		if ( pCn == NULL ) {
			TESTHR(pCn.CreateInstance(__uuidof(Connection)));
		}
		nErr = 1;
		if ( pRs == NULL ) {
			TESTHR(pRs.CreateInstance(__uuidof(Recordset)));
		}
		nErr = 2;
		// *******************************
		// カーソルタイプ設定
		// *******************************
		pCn->CursorLocation	= adUseServer;
		pRs->CursorLocation	= adUseServer;

		// *******************************
		// 接続
		// *******************************
		pCn->Open(ConnectString, "", "", adConnectUnspecified);
		nErr = 3;

		// *******************************
		// レコードセット取得
		// *******************************
		Query.operator = ( "select * from [社員マスタ]" );
		pRs->Open(
			Query,
			_variant_t((IDispatch *)pCn,true),
			adOpenKeyset,
			adLockOptimistic,
			adCmdText);
		nErr = 4;

		// *******************************
		// 出力ファイルオープン
		// *******************************
		Csv = fopen( "社員マスタ.csv", "wt" );
		if ( Csv == NULL ) {
			printf( "出力ファイルをオープンできません" );
			pRs->Close();
			pRs.Release();
			pRs = NULL;
			pCn->Close();
			pCn.Release();
			pCn = NULL;
			return 1;
		}


		// *******************************
		// タイトル出力
		// *******************************
		Buffer.operator = ( "" );
		for (i = 0;i <= (pRs->Fields->Count-1);i++) {
			if ( Buffer.operator != ("") ) {
				Buffer.operator += (",");
			}

			nIndex.iVal = i;
			vValue = pRs->Fields->GetItem(nIndex)->Name;
			Work.operator = (vValue);
			Buffer.operator += (Work);
		}
		fprintf( Csv, "%s\n", (LPTSTR)Buffer );

		// *******************************
		// データ出力
		// *******************************
		while( !(pRs->EndOfFile) ) {
			Buffer.operator = ( "" );
			for (i = 0;i <= (pRs->Fields->Count-1);i++) {
				if ( Buffer.operator != ("") ) {
					Buffer.operator += (",");
				}

				nIndex.iVal = i;
				vValue = pRs->Fields->GetItem(nIndex)->Value;

				switch(vValue.vt) {
				case VT_LPWSTR:
				case VT_LPSTR:
				case VT_BSTR:
				case VT_DATE:
				case VT_BOOL:
				case VT_R4:
				case VT_R8:
				case VT_CY:
				case VT_I1:
				case VT_UI1:
				case VT_UI2:
				case VT_UI4:
				case VT_INT:
				case VT_UINT:
				case VT_DECIMAL:
				case VT_I2:
				case VT_I4:
					Work.operator = (vValue);
					Buffer.operator += (Work);
					break;
				case VT_EMPTY:
				case VT_NULL:
					Buffer.operator += ("");
					break;
				default:
					Buffer.operator += ("???");
					break;
				}
			}
			fprintf( Csv, "%s\n", (LPTSTR)Buffer );
			pRs->MoveNext();

		}

		// *******************************
		// ファイルクローズ
		// *******************************
		fclose( Csv );
		
		// *******************************
		// レコードセットクローズ
		// *******************************
		pRs->Close();
		pRs.Release();
		pRs = NULL;

		// *******************************
		// 接続解除
		// *******************************
		pCn->Close();
		pCn.Release();
		pCn = NULL;
	}
	catch (_com_error &e)
	{
		printf( "%s\n", e.ErrorMessage() );

		if ( nErr == 3 ) {
			ProviderError( pRs );
			pCn->Close();
			pCn.Release();
			pCn = NULL;
		}
		if ( nErr == 4 ) {
			ProviderError( pRs );
			pRs->Close();
			pRs.Release();
			pRs = NULL;
			pCn->Close();
			pCn.Release();
			pCn = NULL;
		}

	}
	
// **********************************************************
// COM 使用終了処理
// **********************************************************
	CoUninitialize();

	return 0;
}

// **********************************************************
// プロバイダエラーメッセージ取得
// **********************************************************
BOOL ProviderError( _RecordsetPtr pRsTarget )
{
	if ( pRsTarget == NULL ) {
		printf( "レコードセットは無効です" );
		return false;
	}

	_bstr_t Message;
	_variant_t vtConnect = pRsTarget->GetActiveConnection();
	_ConnectionPtr pCnWork;
	ErrorPtr pErr;
	long i,nCount;

	if ( vtConnect.vt == VT_DISPATCH ) {
		pCnWork = (_ConnectionPtr)vtConnect;
		nCount = pCnWork->Errors->Count;
		Message.operator = ( "" );
		for( i = 0; i < nCount; i++ ) {
			pErr = pCnWork->Errors->GetItem(i);
			Message.operator += ( pErr->Description );
			Message.operator += ( "\n" );
		}
		printf( "%s", (LPTSTR)Message );
	}
	else {
		printf( "接続が無効です" );
		return false;
	}

	return true;
}
  



  StdAfx.h

  
#include <lightbox.h>
#include <LboxDatabase.h>

#pragma comment( lib, "lightbox.lib" )
#pragma comment( lib, "shlwapi.lib" )
  



  LboxDatabase + Excel ( バッチ )

  
#include "stdafx.h"

// **********************************************************
// オブジェクト使用宣言
// **********************************************************
LboxDatabase *CurDb;

int main(int argc, char* argv[])
{
// **********************************************************
// COM 使用初期化
// **********************************************************
	CoInitialize(NULL);

// **********************************************************
// オブジェクト作成
// **********************************************************
	CurDb = new LboxDatabase();

// **********************************************************
// ターゲット Excel
// **********************************************************
	LboxString Target("C:\\TEMP\\社員マスタ.xls");

// **********************************************************
// ワーク
// **********************************************************
	LboxString Buffer;
	LboxString Work;
	FILE *Csv;
	BOOL bRet;
	int i;

// **********************************************************
// 接続文字列
// **********************************************************
	CurDb->SetConnectString( 0, &Target );

// **********************************************************
// 接続
// **********************************************************
	if ( !CurDb->Connect() ) {
		printf( "データベースの接続に失敗しました");
		delete CurDb;
		return 1;
	}	

// **********************************************************
// レコードセット取得
// **********************************************************
	LboxString Query( "select * from [社員マスタ]" );
	bRet = CurDb->Query( &Query );
	if ( !bRet ) {
		printf( "%s\n", CurDb->ErrMessage.szLboxString );
		CurDb->DisConnect();
		delete CurDb;
		return 1;
	}

// **********************************************************
// 出力ファイルオープン
// **********************************************************
	Csv = fopen( "社員マスタ.csv", "wt" );
	if ( Csv == NULL ) {
		CurDb->DisConnect();
		delete CurDb;
		return 1;
	}

// **********************************************************
// タイトル出力
// **********************************************************
	Buffer.operator = ( "" );
	for (i = 0;i <= (CurDb->nFieldCount-1);i++) {
		if ( Buffer.operator != ("") ) {
			Buffer.operator += (",");
		}

		CurDb->GetName( i, &Work );
		Buffer.operator += (&Work);
	}
	fprintf( Csv, "%s\n", Buffer.szLboxString );

// **********************************************************
// データ出力
// **********************************************************
	while( bRet ) {
		Buffer.operator = ( "" );
		for (i = 0;i <= (CurDb->nFieldCount-1);i++) {
			if ( Buffer.operator != ("") ) {
				Buffer.operator += (",");
			}

			CurDb->GetText( i, &Work );
			Buffer.operator += (&Work);
		}
		fprintf( Csv, "%s\n", Buffer.szLboxString );

		bRet = CurDb->Query( );
	}

// **********************************************************
// ファイルクローズ
// **********************************************************
	fclose( Csv );

// **********************************************************
// 接続解除
// **********************************************************
	CurDb->DisConnect();
	
// **********************************************************
// オブジェクト削除
// **********************************************************
	delete CurDb;

// **********************************************************
// COM 使用終了処理
// **********************************************************
	CoUninitialize();

	return 0;
}
  










  infoboard   管理者用   
このエントリーをはてなブックマークに追加





フリーフォントWEBサービス
SQLの窓WEBサービス

SQLの窓フリーソフト

素材

一般WEBツールリンク

SQLの窓

フリーソフト

JSライブラリ