|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
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; Что не так? 2) Как сделать чтобы данные выводимая таблица была с границами? 3) Как сделать чтобы лист был не в книжном, а в альбомном формате? |
#2
|
|||
|
|||
1) Выводит она тебе именно так, как ты написал.
Разберись с циклами (самый конец твоего кода). Что-то много там их у тебя. 2) В экселе Select.Range, а дальше делаешь соотв. настройки. Вариант - включить запись макросов в экселе, сделать нужную операцию, а потом посмотреть что там в макросе получилось. собственно, именно так писали для одного проекта интеграцию с офисом. 3) Править соотв. настройки. Какие - можно посмотреть также, как в п.2). |
#3
|
|||
|
|||
3) Excel.ActiveSheet.PageSetup.Orientation:= 2;
http://www.delphisources.ru/forum/showthread.php?t=1560 |
#4
|
|||
|
|||
Цитата:
Да я сам понимаю что в цикле косяк, но что не так то? Цитата:
А конкретный пример можно? Цитата:
Спасибо. |
#5
|
|||
|
|||
С циклом разобрался. Теперь подскажите как объединить ячейки, как делать выравнивание в ячейках, и по 2 вопросу!
|
#6
|
|||
|
|||
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. |
#7
|
|||
|
|||
Спасибо Qwed86. А незнаешь как сделать чтобы создаваемуму, при запуске проекта, файлу *.exe версию файла написать, ну в свойствах файла, вкладка "версия", когда смотришь, там можно посмотреть версию продукта, версию файла, внутреннея имя, язык и т.д.???
|
#8
|
|||
|
|||
3) Excel.ActiveSheet.PageSetup.Orientation:= 2;
http://www.delphisources.ru/forum/showthread.php?t=1560 |