ПРо Excel

  • Автор темы Aleksus
  • Дата начала
A

Aleksus

Гость
#1
Подстажите плз, опять любимый Excel.
Сколько не смотрел как из StringGrid запихать данные в Excel, так и не нашел того что мне надо или вернее то что я пойму:D
Заполнение таблицы конечно не важно... пока:)
Кое как написал следущее:
Код:
#include <vcl.h>
#pragma hdrstop
#include <math.hpp>
#include <vcl\excel_2k.h>
#include <math.h>
#include "Unit1.h"
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
double F[10][10];
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)

{int i,j;
for (i=1; i<10; i++)
StringGrid1->Cells[0][i]=i*i;
for (i=0; i<10; i++)
for (j=0; j<10; j++)
F[i][j]=StrToFloatDef(StringGrid1->Cells[i][j],0);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Variant var_Excel, var_Sheet;
int Row_Counter, Column_Counter, Max_Column = 1, Max_Row = 10;
String XlsFileName1 = ExtractFilePath(Application->ExeName)+"OTCHET.xls";
var_Excel=CreateOleObject("Excel.Application");
var_Excel.OlePropertyGet("Application").OlePropertyGet("Workbooks").
OleProcedure("Open" , OleVariant(XlsFileName1));
var_Sheet = var_Excel.OlePropertyGet("ActiveSheet");

Row_Counter=0;
for (Row_Counter; Row_Counter < Max_Row; Row_Counter ++)
{
Column_Counter=0;
for (Column_Counter; Column_Counter < Max_Column; Column_Counter ++)
var_Sheet.OlePropertyGet("Cells", Row_Counter+1, Column_Counter+1).
OlePropertySet("Value",F[Column_Counter][Row_Counter]);
}
var_Excel.OlePropertyGet("Application").OleProcedure("Quit");
var_Sheet = Unassigned;
var_Excel = Unassigned;
}
Но появляются вопросы:
1) почему не получается написать просто? Выдает ошибку, а через масив - так нормально:(
Код:
 .....
OlePropertySet("Value",StrToFloatDef(StringGrid1->Cells[Column_Counter][Row_Counter],0))
.....
2) Все поля заполняются если не значением StringGrid, то нулями, как этого избежать? Т.е. нули то не нужны, оставались бы пустыми:))
3) При завершении записи Excel спрашивает хотите ли сохранить изменения в файле ... Я хочу всегда!, как сделать что б не задавал этот вопрос?