Visual C++: чтение данных из файлов Excel
От: Garett Украина http://www.shupik.newmail.ru
Дата: 15.09.04 09:14
Оценка:
Возникла следующая проблема при чтении данных из файла в формате Excel: когда выполняется SQL-запрос, формат ячеек интерпретируется некорректно. То есть вместо "3" я получаю "3.0". Другими словами, детектирует драйвер неправильно. Причем, если добавить букву к этой тройке, "В3", например, все работает правильно. Вот куски кода:
CDatabase database;
CString sSql;
CString sItem1, sItem2, sItem3, sItem4,sItem5, sItem6;//переменные, в к-е пишу значения столбцов
CString sDriver;
CString sDsn;
CString sFile = "ReadExcel.xls"; //имя файла
...
sDsn.Format("ODBC;DRIVER={%s};DSN='';DBQ=%s",sDriver,sFile);
database.Open(NULL,false,false,sDsn);

CRecordset recset( &database );
// Строка запроса
sSql = "SELECT demo_table.profile, length, diameter, height, steel, kolvo "
"FROM demo_table "
"WHERE profile='Круг' "
"ORDER BY profile";

recset.Open(CRecordset::forwardOnly,sSql,CRecordset::readOnly);
while( !recset.IsEOF() )
{
// Читаем данные
recset.GetFieldValue("profile",sItem1);
recset.GetFieldValue("length",sItem2);
recset.GetFieldValue("diameter",sItem3);
recset.GetFieldValue("height",sItem4);
recset.GetFieldValue("steel",sItem5);
CString value_steel(sItem5);
CString s;
//здесь я пытаюсь отформатировать полученные данные в текстовый формат — безуспешно
s.Format("Steel + %s",value_steel);
recset.GetFieldValue("kolvo",sItem6);
// результат: Steel + 3.0, а должно быть — Steel + 3
// Добавляем в список результаты
(void)m_ctrlSortList.AddItem( _T(sItem1), _T(sItem2), _T(sItem3), _T(sItem4), _T(s), _T(sItem6) );


Есть у кого-нибудь соображения по этому поводу? Может быть, кто-то сталкивался с такой ерундой?

15.09.04 17:20: Перенесено модератором из 'C/C++' — Павел Кузнецов
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.