class OutExcel{
public:
String **dan;
int columns;
int rows;
OutExcel(int rows,int columns);
~OutExcel();
void setDan(int x,int y,String zn);
};
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
OutExcel::OutExcel(int rows,int columns){
this->rows=rows;
this->columns=columns;
dan= new String *[rows];
for(int i=0;i<rows;i++)
dan=new String[columns];
}
OutExcel::~OutExcel(){
delete dan;
}
//---------------------------------------------------------------------------
void OutExcel::setDan(int x,int y,String zn){
dan[x][y]=zn;
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
OutExcel* excelFunOpen(WideString filename){
Variant App, Sh, Cl;
WideString wStr;
String Str;
OutExcel *Excel;
try {
App=Variant::GetActiveObject("Excel.Application");
}
catch(...) {
try {
App=Variant::CreateObject("Excel.Application");
}
catch (...) {
Application->MessageBox("Невозможно открыть Microsoft Excel!"
"Возможно Excel не установлен на компьютере.","Ошибка",MB_OK+MB_ICONERROR);
}
}
try {
//App.OlePropertySet("Visible", "True");
App.OlePropertyGet("Workbooks").OleProcedure("Open",filename);
Sh=App.OlePropertyGet("WorkSheets",1);
}
catch(Exception &e) {
ShowMessage("Ошибка открытия книги Microsoft Excel!" +e.Message);
}
try {
int columns=Sh.OlePropertyGet("UsedRange").OlePropertyGet("Columns").OlePropertyGet("Count");
int rows=Sh.OlePropertyGet("UsedRange").OlePropertyGet("Rows").OlePropertyGet("Count");
Excel=new OutExcel(rows,columns);
for(int i=0;i<rows;i++){
//if (i==0) StringGrid->Cells[0][0]="№ выборки"; else StringGrid->Cells[0]=i;
for(int j=0;j<columns;j++){
Cl = Sh.OlePropertyGet("Cells",i+1,j+1);
Str= Cl.AsType(varString);
Excel->setDan(i,j,Str);
}
}
}
catch(Exception &e){
ShowMessage("Ошибка: "+e.Message);
}
App.OleProcedure("Quit");
return Excel;
}
Проблема с открытием файла Excel
Код:
Такая проблема:
Если когда я хочу загрузить из файла данные,в это время открыт Excel то ничего не загружается выдаётся ошибка открытия книги.
Если когда я уже загрузил данные в программу, я попытаюсь открыть тот файл Excel из которого я загружал их то ничего не выйдёт, эксель не запустится.
И даже после того как я закрываю свою программу я попытаюсь открыть тот файл из которого я загружал данные то он всё равно не откроется.
Файл этот можно открыть только после того как я открою другой excel файл а потом этот, после этого он уже открывается нормально.
Как это исправить?
P.S. Вкладкой Office в Borlande не пользовался.
Sh=App.OlePropertyGet("WorkSheets",1);
Объект надо активировать
Sh.OleProcedure("Activate");
Спасибо помогло идеально !!!