Re[9]: База в Excel'e
От: Koumandin Россия  
Дата: 22.08.01 16:58
Оценка:
Здравствуйте Koumandin, вы писали:


K>Кстати на CodeGuru в разделе VC++ / Database есть хороший пример работы с Экселем. И к нему полезные коментарии. :-)


А вот пример работы с Экселем из Дао, который родился у меня из вышеназванного источника. Здесь в CListCtrl m_list набиваются данные из файла Import.xls — лист Import.

try
{
CDaoDatabase* pDB = new CDaoDatabase;
pDB->Open("Import.xls", TRUE, TRUE, "Excel 5.0;");
CDaoRecordset rs(pDB) ;
rs.Open (dbOpenDynaset, "select * from [Import$]");
rs.MoveLast();
CString str;
short nFields = rs.GetFieldCount();
for ( int i = 0; i < nFields; i++ )
{
CDaoFieldInfo fieldinfo;
rs.GetFieldInfo( i, fieldinfo );
m_list.InsertColumn( i, fieldinfo.m_strName, LVCFMT_LEFT, 100 );
}

rs.MoveFirst();
int count = 0, pos = 0;
while (! rs.IsEOF() )
{
for ( int i = 0; i < nFields; i++ )
{
COleVariant var0;
var0.Clear();
rs.GetFieldValue( i, var0 );
switch ( var0.vt )
{
case VT_BSTR: str = var0.bstrVal; break;
case VT_I4: str.Format ("%ld ", var0.lVal); break;
default: str.Format ("%.0f ", var0.dblVal);
}

if ( i == 0 )
pos = m_list.InsertItem( count++, str );
else
{
LVITEM lvi;
lvi.mask = LVIF_TEXT;
lvi.iItem = pos;
lvi.iSubItem = i;
lvi.pszText = (char*)(LPCSTR)str;
m_list.SetItem( &lvi );
}
}
rs.MoveNext();
}

}
catch (CDaoException e)
{
AfxMessageBox (e.m_pErrorInfo->m_strDescription, MB_OK ) ;
}

Удачи ;-)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.