Russian Qt Forum

Qt => Базы данных => Тема начата: Evgeniya от Август 19, 2009, 17:42



Название: как можно подключится к Excel
Отправлено: Evgeniya от Август 19, 2009, 17:42
Здраствуйте еще раз!!!! :)
У меня такой вопрос...как можно подключится к Excel через QSqlDatabase

Код
C++ (Qt)
QSqlDatabase d=QSqlDatabase::addDatabase("QODBS");
d.setDatabaseName("DRIVER={Microsoft Excel Driver (*.xls)};FIL={MS Excel};
DBQ=D:\Qt\proba\release\file.xls"
);
if(d.open())
QMessageBox::information(0,"ок","подключено");
else
QMessageBox::critical(0,"Ошибка подключения",d.lastError().text());
 
так не получается подключится


Название: Re: как можно подключится к Excel
Отправлено: Пантер от Август 19, 2009, 18:10
D:\\Qt\\proba\\release\\file.xls
Или лучше D:/Qt/proba/release/file.xls


Название: Re: как можно подключится к Excel
Отправлено: Evgeniya от Август 19, 2009, 18:22
D:\\Qt\\proba\\release\\file.xls
Или лучше D:/Qt/proba/release/file.xls

Не помогает...пишет: Driver not loaded  :(


Название: Re: как можно подключится к Excel
Отправлено: Пантер от Август 19, 2009, 18:54
:) В поиск по фразе Driver not loaded.
Тьфу, QODBС


Название: Re: как можно подключится к Excel
Отправлено: Evgeniya от Август 19, 2009, 19:03
Точно!!! ;D
Спасибочки!!!


Название: Re: как можно подключится к Excel
Отправлено: Evgeniya от Август 26, 2009, 19:36
Может кто-нибудь подскажет, как можно добавить данные в таблицу Excel??
делаю так:
Код
C++ (Qt)
dbExl=QSqlDatabase::addDatabase("QODBC");
dbExl.setDatabaseName("DRIVER={Microsoft Excel Driver (*.xls)};FIL={MS Excel};DBQ=" + qApp->applicationDirPath().replace("/","\\") + "\\data\\report.xls");
if(!dbExl.open()){
QMessageBox::critical(0,"Error",dbExl.lastError().text());
}
QSqlQuery query=QSqlQuery(dbExl);
      query2.exec("INSERT INTO temp([Name auction],[Name_LPU],"
        "[Name_LS],[Summa]) "
        "values(fghbfg,gffhgh,gbhfc,67)");
        QMessageBox::critical(0,"Error",query2.lastError().text());
 
Выдается ошибка:
[Microsoft][Драйвер ODBC Excel] Объект 'temp' не найден ядром базы данных Microsoft Jet.


Название: Re: как можно подключится к Excel
Отправлено: Пантер от Август 26, 2009, 19:53
query2 - очепятка?
Сама таблица temp существует?


Название: Re: как можно подключится к Excel
Отправлено: Evgeniya от Август 26, 2009, 20:00
query2 - очепятка?
Ага,опечатка..
Сама таблица temp существует?

Ну да, я в Excel создала лист temp с вышеперчисленными полями...

Может быть вообще так нельзя делать??


Название: Re: как можно подключится к Excel
Отправлено: NicK от Март 02, 2010, 14:55
Я делаю так:

Код
C++ (Qt)
   QString excelFilePath="C:\\test.xls";
   if (QFile::exists(excelFilePath))QFile::remove(excelFilePath);
   QString strDBName = QString("DRIVER={Microsoft Excel Driver (*.xls)};FIL={MS Excel}; READONLY=FALSE;DBQ="+excelFilePath);
   {
       QSqlDatabase db = QSqlDatabase::addDatabase("QODBC","xls_db");
       db.setDatabaseName(strDBName);
       if (!(db.open())) qDebug()<<"DEBUG: "<<"open DB failed. "<<db.lastError();
       else {
           QSqlQuery query(db);
           if (!query.exec("CREATE TABLE `testdb` (aaa CHAR(128), bbb CHAR(128))"))qDebug()<<"DEBUG: "<<"query exec error. table create failed."<<query.lastError();
           else {
               qDebug()<<"DEBUG: "<<"table created. inserting values...";
               if (!query.exec("INSERT INTO testdb VALUES ('"+tr("blebleble")+"', '"+tr("blblabla")+"')"))qDebug()<<"DEBUG: "<<"query exec error. insert values failed."<<query.lastError();
               else {
 
               };
           };
           qDebug()<<"DEBUG: "<<"closing DB..."; db.close();
       };
   };qDebug()<<"DEBUG: "<<"remove connection.";QSqlDatabase::removeDatabase("xls_db");


Подскажите, пожалуйста, что нужно сделать чтоб вставлять форматированные данные в excel(цвет шрифта, ячеек, выравнивание)?
Если это вообще реально  :)


Название: Re: как можно подключится к Excel
Отправлено: JayFOX от Март 02, 2010, 20:50
Попробуй через ActiveQt


Название: Re: как можно подключится к Excel
Отправлено: NicK от Март 03, 2010, 09:09
Попробуй через ActiveQt
У меня Qt Opensource Edition. ActiveX там не поддерживается.


Название: Re: как можно подключится к Excel
Отправлено: lit-uriy от Март 03, 2010, 09:57
>>ActiveX там не поддерживается.
Он поддерживается, если компиллер студийный


Название: Re: как можно подключится к Excel
Отправлено: NicK от Март 03, 2010, 13:49
mingw + Qt  :-(


Название: Re: как можно подключится к Excel
Отправлено: Dimich от Март 04, 2010, 11:19
Почему не использовать формат Excel 2003 xml? Там и формат страницы и параметры ячейки.


Название: Re: как можно подключится к Excel
Отправлено: NicK от Март 04, 2010, 13:52
Почему не использовать формат Excel 2003 xml? Там и формат страницы и параметры ячейки.
уже. :-)
но формат .xls тоже нужен.


Название: Re: как можно подключится к Excel
Отправлено: JayFOX от Март 04, 2010, 19:23
В src есть папка activeQt, собираешь её и QAxObject можешь использовать. (это я делал на скачанном SDK с сайта), как использовать -  в нете много всего.