powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Экспорт в Excel с итогами
3 сообщений из 3, страница 1 из 1
Экспорт в Excel с итогами
    #39881861
ularsoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте!
Ребята, подскажите, экспорт делаю в excel.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
procedure TfmMain.tPrintExecute(Sender: TObject);
begin
  d := Trunc(Now);
with dm do
begin
  qPrint.Close;
  qPrint.SQL.Clear;
  qPrint.SQL.Add('Select cDate, cOper, cName, cSum, cCurs, cDiscount, TotalSum, FIO, Dok from CashDok where cDate between :d1 and :d2');
  qPrint.SQL.Add('order by cName, cOper, cDate');
  qPrint.ParamByName('d1').AsDateTime := d;
  qPrint.ParamByName('d2').AsDateTime := d + 1;
  qPrint.Open;

 // Создаем массив элементов, полученных в результате запроса
 XArr:=VarArrayCreate([1,qPrint.FieldCount],varVariant);
 XL:=CreateOLEObject('Excel.Application'); {Создание OLE объекта}
 XL.WorkBooks.add;
 XL.visible:=true;

 j := 4;

 XL.Range['A1','I1'].MergeCells:=True; {Объединение ячеек}
 XL.Range['A1','A1'].Value :='Реестр по обмену валют за '+
  DateTimeToStr(Now);
 XL.Range['A1','A1'].Font.Bold:=True;
 XL.Range['A1','A1'].Font.Color:=clRed;
 XL.Range['A3','A3'].Value :='Дата и время совершения операции';
 XL.Range['A3','A3'].Font.Bold:=True;
 XL.Range['B3','B3'].Value :='Вид операции';
 XL.Range['B3','B3'].Font.Bold:=True;
 XL.Range['C3','C3'].Value :='Вид валюты';
 XL.Range['C3','C3'].Font.Bold:=True;
 XL.Range['D3','D3'].Value :='Сумма валюты';
 XL.Range['D3','D3'].Font.Bold:=True;
 XL.Range['E3','E3'].Value :='Курс обмена';
 XL.Range['E3','E3'].Font.Bold:=True;
 XL.Range['F3','F3'].Value :='Скидка';
 XL.Range['F3','F3'].Font.Bold:=True;
 XL.Range['G3','G3'].Value :='Всего';
 XL.Range['G3','G3'].Font.Bold:=True;
 XL.Range['H3','H3'].Value :='ФИО клиента';
 XL.Range['H3','H3'].Font.Bold:=True;
 XL.Range['I3','I3'].Value :='Документ';
 XL.Range['I3','I3'].Font.Bold:=True;

 qPrint.First;
 while not qPrint.Eof do
  begin
   i:=1;
   while i<=qPrint.FieldCount do
    begin
     XArr[i] := qPrint.Fields[i-1].Value; //Массив столбцов
     i := i+1;
    end;
   XL.Range['A'+IntToStr(j),
   CHR(64+qPrint.FieldCount)+IntToStr(j)].Value := XArr;
   qPrint.Next;
   j:=j+1;
  end;

 //стиль линии границы
 //XL.Range['A3',CHR(64+qPrint.FieldCount)+IntToStr(j-1)].Borders.LineStyle:=xlThin;
 //ширина линии
 //XL.Range['A3',CHR(64+qPrint.FieldCount)+IntToStr(j-1)].Borders.Weight:=xlHairline;
 //обводим табличку
 //XL.Range['A3',CHR(64+qPrint.FieldCount)+IntToStr(j-1)].BorderAround(xlThin,xlThin,xlAutomatic,xlAutomatic);

 XL.Range['A1',CHR(64+qPrint.FieldCount)+IntToStr(j)].select;
 XL.Selection.Font.Name:='Arial cur';
 XL.Selection.Font.Size:=10;
 XL.Selection.Columns.AutoFit;
 XL.Range['A1','A1'].select;

end;
end;




Как вытащить итоги по валютам? Спасибо.
...
Рейтинг: 0 / 0
Экспорт в Excel с итогами
    #39881888
Anton_1234
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ularsoft,
можно формулу вставить в Excel
как я предполагаю просуммировать нужно колонку G (7-я колонка, т.е. C7)
что-то типа вставить в код
Код: pascal
1.
2.
3.
RowNach:=... // верхний ряд колонки, найдешь его
RowKon:=... // нижний ряд колонки, найдешь его
XL.Cells[1, j+3].Formula:='=SUM(R'+IntToStr(RowNach)+'C7:R'+IntToStr(RowKon)+'C7)';



как-то так,
книга одна похоже, поэтому пока сойдет, вообще если несколько книг, то надо указывать с какой книгой работать, находить их индексы в массиве Workbooks (индексы при закрытии-открытии книг меняются)

зы. буквенные координаты не люблю использовать когда с Excel работаю, с числовыми координатами легче
...
Рейтинг: 0 / 0
Экспорт в Excel с итогами
    #39881890
Anton_1234
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
добавка:
1 из программы формулы всегда вставляются в английском написании, даже если Excel русифицированный
2 я в абсолютных ссылках формулу написал, если в относительных надо - разберешься сам
3 если формулу в Excel посмотреть, то в некоторых поля разделяются точкой с запятой, например
=ЕСЛИ(1>0;a;b), в Delphi разделитель запятая =IF(1>0,a,b), вроде бы так, пробуй
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Экспорт в Excel с итогами
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]