Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > Ошибка при считывании с Excel


Автор: Андракула 28.11.2005, 20:57
Здравствуйте!
У меня следующая ошибка при считывании данных с excel. smile

вот что выдается:

[LINKED ERROR] Unresolved external
'System::VariantSystem::Variant::OlePropertyGet<int, int>(const System::AnsiString&, int, int)'
referenced from C:\UNIT1.OBJ

а вот кода кусок:

Код

#include <vcl.h>
#pragma hdrstop

#include <ComObj.hpp>
#include <utilcls.h>

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;

//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
        XL=CreateOleObject("Excel.Application");
}

__fastcall TForm1::~TForm1()
{
   XL.OleProcedure("Quit");
}

//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{

        XL.OlePropertyGet("WorkBooks").OleProcedure("Open","C:\\test.xls");
        XL.OlePropertySet("Visible",true);

        sheets=XL.OlePropertyGet("WorkSheets",1);
       Variant result,cur;
       cur = sheets.OlePropertyGet("Cells",1,2);
       result = cur.OlePropertyGet("Value");
}


если поможет, вот еще и header к нему:

Код


#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published:
        TButton *Button1;
        void __fastcall Button1Click(TObject *Sender);
private:    
                Variant XL,sheets;
public:        
        __fastcall TForm1(TComponent* Owner);
         __fastcall ~TForm1();
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif


Заранее всем спасибо!
Буду безумно счастлив советам, а то запарился на этом уже![code=cpp]

Автор: sexton 29.11.2005, 08:44
Вместо
Цитата
cur = sheets.OlePropertyGet("Cells",1,2);


Пиши
Код

  cur = sheet.OlePropertyGet("Cells").OlePropertyGet("Item",1,2);



Автор: Андракула 29.11.2005, 23:57
Спасибо, но все равно не работает, такая же ошибка smile smile

Автор: sexton 30.11.2005, 09:12
http://wladm.narod.ru/Borland/excel.html - одно из самых подробных руководств по работе с Excel. Попробуй, может там чего найдешь.

Автор: Андракула 30.11.2005, 23:04
Здравствуйте! Спасибо за помощь!

Да я от туда и брал как раз пример smile

smile smile smile
Может с версиями Windows или Excel что то не так?

У меня Win XP, а office пробовал и 2003 и 2000.

Автор: Андракула 1.12.2005, 00:05
Cовершилось чудо!!!!!!!!!!!!!!
Получилось!!!!
smile smile smile
Я переустановил office (установил 2000), переустановил builder5 (при установке указал, что используется office2000), ну и считываемый файл надо было еще в этом же office создать. Вот и все!
Круто!!!! smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)