Visual Basic에서 엑셀 파일 등을 이용하는 것은 쉽다고 알려져 있으나
Visual C++에서는 어떻게 사용해야 될지 몰라서 검색을 해보니 몇가지 방법이 있었다.
1. Automation을 이용하는 방법이 있으며
http://support.microsoft.com/default.aspx?scid=kb;EN-US;186122
에서 기본 정보를 찾을 수 있다.
2. 좀 더 편한 방법을 찾다 보니 CSpreadSheet 클래스를 이용하는 방법이 있었다.
http://www.codeproject.com/KB/database/cspreadsheet.aspx
http://www.codeguru.com/cpp/data/mfc_database/microsoftexcel/article.php/c4307/
둘다 내용은 같은거 같고 codeguru가 로그인 안하고 파일 다운로드 할 수 있으니
쉽게 이용할 수 있을 것 같다.
첫번째 msdn 샘플...
// OLE Variant for Optional.
COleVariant VOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
_Application objApp;
_Workbook objBook;
Workbooks objBooks;
Worksheets objSheets;
_Worksheet objSheet;
Range objRange;
VARIANT ret;
// Instantiate Excel and open an existing workbook.
objApp.CreateDispatch("Excel.Application");
objBooks = objApp.GetWorkbooks();
objBook = objBooks.Open("C:\\Test.xls",
VOptional, VOptional, VOptional, VOptional,
VOptional, VOptional, VOptional, VOptional,
VOptional, VOptional, VOptional, VOptional);
objSheets = objBook.GetWorksheets();
objSheet = objSheets.GetItem(COleVariant((short)1));
//Get the range object for which you wish to retrieve the
//data and then retrieve the data (as a variant array, ret).
objRange = objSheet.GetRange(COleVariant("A1"), COleVariant("C8"));
ret = objRange.GetValue();
//Create the SAFEARRAY from the VARIANT ret.
COleSafeArray sa(ret);
//Determine the array's dimensions.
long lNumRows;
long lNumCols;
sa.GetUBound(1, &lNumRows);
sa.GetUBound(2, &lNumCols);
//Display the elements in the SAFEARRAY.
long index[2];
VARIANT val;
int r, c;
TRACE("Contents of SafeArray\n");
TRACE("=====================\n\t");
for(c=1;c<=lNumCols;c++)
{
TRACE("\t\tCol %d", c);
}
TRACE("\n");
for(r=1;r<=lNumRows;r++)
{
TRACE("Row %d", r);
for(c=1;c<=lNumCols;c++)
{
index[0]=r;
index[1]=c;
sa.GetElement(index, &val);
switch(val.vt)
{
case VT_R8:
{
TRACE("\t\t%1.2f", val.dblVal);
break;
}
case VT_BSTR:
{
TRACE("\t\t%s",(CString)val.bstrVal);
break;
}
case VT_EMPTY:
{
TRACE("\t\t<empty>");
break;
}
}
}
TRACE("\n");
}
//Close the workbook without saving changes
//and quit Microsoft Excel.
objBook.Close(COleVariant((short)FALSE), VOptional, VOptional);
objApp.Quit();
'COM, ATL' 카테고리의 다른 글
모니커와 MSHTML을 이용한 HTML 파싱 (2) | 2008.09.10 |
---|---|
Active Accessibility - IAccessible 인터페이스 이용 접근 (0) | 2008.09.10 |
ROT 와 모니커(Moniker) - 개념 및 델파이 코딩 (0) | 2008.09.10 |
ATL_NO_VTABLE (2) | 2008.08.30 |
BSTR 자료형 고찰과 사용시 주의점 (2) | 2008.08.29 |
싱크 부분 구현 참조..... (2) | 2008.08.28 |
How ATL Implements Connections (0) | 2008.08.28 |