Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Компоненты и классы
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 17.10.2008, 13:32
Antik163rus Antik163rus вне форума
Прохожий
 
Регистрация: 11.09.2008
Сообщения: 33
Репутация: 10
По умолчанию Stringgrid и excel

День добрый!
1) Мне надо сохранить данные стрингрида в ексель. Кол-во строк в стрингриде может быть от 1 (0 строка фиксированная). Кол-во столбцов 5 (0 фиксированный столбец) и не меняеца. Так вот не пойму как это сделать.
мой код такой:
Код:
procedure Tsozd2.Button5Click(Sender: TObject);
var
 XLApp,Sheet,Colum:Variant;
 i,i1,f,f1,rc:Integer;
begin
 XLApp:= CreateOleObject('Excel.Application');
 XLApp.Visible:=true;
 XLApp.Workbooks.Add(-4167);
 XLApp.Workbooks[1].WorkSheets[1].Name:='Наряд';
 Colum:=XLApp.Workbooks[1].WorkSheets['Наряд'].Columns;
 Colum.Columns[1].ColumnWidth:=27.86;
 Colum.Columns[2].ColumnWidth:=17.71;
 Colum.Columns[3].ColumnWidth:=7.86;
 Colum.Columns[4].ColumnWidth:=14.29;
 Colum.Columns[5].ColumnWidth:=9.29;
 Colum.Columns[6].ColumnWidth:=9.29;

 Colum:=XLApp.Workbooks[1].WorkSheets['Наряд'].Rows;
 Colum.Rows[2].Font.Bold:=true;

 Sheet:=XLApp.Workbooks[1].WorkSheets['Наряд'];
 Sheet.Cells[2,1]:='ФИО';
 Sheet.Cells[2,2]:='Табельный номер';
 Sheet.Cells[2,3]:='Разряд';
 Sheet.Cells[2,4]:='Фонд времени';
 Sheet.Cells[2,5]:='Тариф';
 Sheet.Cells[2,6]:='Сумма';
 for i:=1 to stringgrid1.RowCount-1 do begin
 for i1:=1 to 5 do begin
     rc:=stringgrid1.rowcount;
     for f:=3 to rc do
     for f1:=1 to 6 do
     Sheet.Cells[f,f1]:=stringgrid1.Cells[i1,i];
 end;
 end;
end;
При сохранении программа выводит данные последнего столбца (5) и последней строки, т.е. (имеем 7 строк) stringgrid1.cells[5,7].
Что не так?

2) Как сделать чтобы данные выводимая таблица была с границами?

3) Как сделать чтобы лист был не в книжном, а в альбомном формате?
Ответить с цитированием
  #2  
Старый 17.10.2008, 15:38
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,020
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

1) Выводит она тебе именно так, как ты написал.
Разберись с циклами (самый конец твоего кода). Что-то много там их у тебя.

2) В экселе Select.Range, а дальше делаешь соотв. настройки. Вариант - включить запись макросов в экселе, сделать нужную операцию, а потом посмотреть что там в макросе получилось. собственно, именно так писали для одного проекта интеграцию с офисом.

3) Править соотв. настройки. Какие - можно посмотреть также, как в п.2).
Ответить с цитированием
  #3  
Старый 17.10.2008, 15:51
Qwed86 Qwed86 вне форума
Новичок
 
Регистрация: 12.09.2008
Сообщения: 66
Репутация: 10
По умолчанию

3) Excel.ActiveSheet.PageSetup.Orientation:= 2;
http://www.delphisources.ru/forum/showthread.php?t=1560
Ответить с цитированием
  #4  
Старый 17.10.2008, 15:51
Qwed86 Qwed86 вне форума
Новичок
 
Регистрация: 12.09.2008
Сообщения: 66
Репутация: 10
По умолчанию

3) Excel.ActiveSheet.PageSetup.Orientation:= 2;
http://www.delphisources.ru/forum/showthread.php?t=1560
Ответить с цитированием
  #5  
Старый 20.10.2008, 06:48
Antik163rus Antik163rus вне форума
Прохожий
 
Регистрация: 11.09.2008
Сообщения: 33
Репутация: 10
По умолчанию

Цитата:
1) Выводит она тебе именно так, как ты написал.
Разберись с циклами (самый конец твоего кода). Что-то много там их у тебя.

Да я сам понимаю что в цикле косяк, но что не так то?

Цитата:
2) В экселе Select.Range, а дальше делаешь соотв. настройки. Вариант - включить запись макросов в экселе, сделать нужную операцию, а потом посмотреть что там в макросе получилось. собственно, именно так писали для одного проекта интеграцию с офисом.

А конкретный пример можно?

Цитата:
Сообщение от Qwed86
3) Excel.ActiveSheet.PageSetup.Orientation:= 2;
http://www.delphisources.ru/forum/showthread.php?t=1560

Спасибо.
Ответить с цитированием
  #6  
Старый 21.10.2008, 09:42
Antik163rus Antik163rus вне форума
Прохожий
 
Регистрация: 11.09.2008
Сообщения: 33
Репутация: 10
По умолчанию

С циклом разобрался. Теперь подскажите как объединить ячейки, как делать выравнивание в ячейках, и по 2 вопросу!
Ответить с цитированием
  #7  
Старый 21.10.2008, 12:05
Qwed86 Qwed86 вне форума
Новичок
 
Регистрация: 12.09.2008
Сообщения: 66
Репутация: 10
По умолчанию

XLApp.WorkBooks[1].WorkSheets[1].Range['A13:H55'].Merge;-объединение.
А выравниваний дофига. Вот вобщем посмотри:
http://www.codenet.ru/progr/delphi/s...cel-Export.php
http://www.delphisources.ru/pages/fa...xcel_work.html
А по 3 вопросу
Cells[i,j].Borders.LineStyle := xlContinuous;
xlContinuous - (1,2,3...) выбирай стили.
Только не Cells, а объединение ячеек.
Вот ещё всё что можно вроде: http://www.delphisources.ru/pages/fa...ord_funcs.html

Последний раз редактировалось Qwed86, 21.10.2008 в 12:21.
Ответить с цитированием
  #8  
Старый 22.10.2008, 08:04
Antik163rus Antik163rus вне форума
Прохожий
 
Регистрация: 11.09.2008
Сообщения: 33
Репутация: 10
По умолчанию

Спасибо Qwed86. А незнаешь как сделать чтобы создаваемуму, при запуске проекта, файлу *.exe версию файла написать, ну в свойствах файла, вкладка "версия", когда смотришь, там можно посмотреть версию продукта, версию файла, внутреннея имя, язык и т.д.???
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 22:15.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter