Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Вывод значений в Excel [D6, IB6.x]


Jaxtor ©   (2003-03-24 11:40:00) 

Уважаемые мастера!
У меня не получается составить алгоритм для одной прораммы.
Суть заключается в том, что нужно вывести в файл Excel
цена1,цена2,цена3, дилер1,дилер2,дилер 3 и строку
адреса и состояние склада.

var Columns:=TStringList.Create;

ExcelCol:=TExcelColForm.Create(Application);
i:=ExcelCol.ShowModal-1;

if i>0 then
begin
Columns:=TStringList.Create;
if (i and 1)>0 then Columns.Add("Price1");
if (i and 2)>0 then Columns.Add("Price2");
if (i and 4)>0 then Columns.Add("Price3");
if (i and 8)>0 then Columns.Add("Dealer1");
if (i and 16)>0 then Columns.Add("Dealer2");

if (i and 32)>0 then Columns.Add("Dealer3");

if (i and 64)>0 then Columns.Add("Address");
if (i and 128)>0 then Columns.Add("Stock");

Excel:=CreateOleObject("Excel.Application");

while not EOF do //вставлям данные; EOF - конец набора данных
//qrProd1

begin

Inc(Row); //следующий Excel ряд

// вывод значений для определенного ряда PN, Product, Waranty
Excel.ActiveSheet.Cells[Row,11].Value:=FieldByName("PN").AsString;
Excel.ActiveSheet.Cells[Row,12].Value:=FieldByName("Product").AsString;
Excel.ActiveSheet.Cells[Row,13].Value:=FieldByName("Waranty").AsString;

for i:=0 to (Columns.Count-1) do begin
// запись значений для определенного ряда Price1,
//Price2, //Price3, Dealer1, Dealer2, Dealer3, Address, Stock
// из набора данных qrProd1

// i - это сдвиг ячейки
// Если выбраны цены:
Excel.ActiveSheet.Columns[14+i].ColumnWidth:=10;
Excel.ActiveSheet.Cells[Row,14+i].Value:=FormatFloat("0.00",FieldByName(Columns[i]).asFloat);
Excel.ActiveSheet.Cells[Row,14+i].Value:=" http://www.xxxxxx.xx/index.phtml?WFi=19&WFgrup="+FieldByName("ProdGrID").AsString+"&WFw=ProdID="+FieldByName("ProdID").AsString;

//Если вместе с ценами выбран и склад
//поиск у вендоров определенной позиции
dmTsn.qrVenStSearch.ParamByName("ProdID").AsString:=FieldByName("ProdID").AsString;
dmTsn.qrVenStSearch.Open;

// запись значений для определенного ряда (состояние склада)
Excel.ActiveSheet.Cells[Row,14+i].Value:=dmTsn.qrVenStSearch.FieldByName("State").AsString;

dmTsn.qrVenStSearch.Close;
end;//for i

Next;

end;// //while not EOF


Соловьев   (2003-03-24 12:09:00) [1]

Т.е. ты решил что мы рассмотрим твой код сами, а тебе лень это сделать? Так никогда не научишся...
ИМХО, не нужно этот цыкл

> for i:=0 to (Columns.Count-1) do begin

сделай как

> // вывод значений для определенного ряда PN, Product, Waranty



Jaxtor   (2003-03-24 12:02:00) [2]

Да, поля смещены....


Соловьев   (2003-03-24 11:55:00) [3]


> Не правильно данные в Excele показывает.

Это как понимать? смещены поля или что?


Jaxtor   (2003-03-24 11:53:00) [4]

Не правильно данные в Excele показывает.


Соловьев   (2003-03-24 11:51:00) [5]

http://www.delphikingdom.com/helloworld/excelsm.htm

> Да тут все работает только нужно было добавить строку адреса
>
> и состояние склада.

А в чем трабл? Ошибку выдает или что?


Jaxtor   (2003-03-24 11:46:00) [6]

Да тут все работает только нужно было добавить строку адреса
и состояние склада.


Wellslava   (2003-03-24 11:45:00) [7]

я использую одну библиотечку SMExport... там все очень хорошо реализовано и в Exel и в Word и др.


Наверх

Титульная страница Поиск, карта сайта Написать письмо