![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Экспорт из проги в MS Excel
Office-man © (2013-09-19 23:43:00)Доброго времени суток мастера! Подскажите как лучше реализовать экспорт данных в документ MS Excel? В проге данные в эдитах и в листвьюв. Надо перекинуть в Эксель в ячейки и таблицу,но число строк таблицы заранее неизвестно :( Приходят на ум лишь два варианта,-сделать файл-шаблон в Экселе и просто туда все экспортировать,но не знаю как добавить программно нужное количество строк в таблицу шаблона :( Второй вариант: программно создавать лист и заполнять данными "на лету" попутно рисуя нужные границы ячеек,сложность для меня в рисовании :)
Office-man (2013-09-22 09:04:00) [1]Спасибо большое!
NoUser (2013-09-22 03:41:00) [2]> можно задать формулы для ячеек таблицы
V := VarArrayCreate([0,L,0,L],varVariant);
for i := 0 to L do
for j := 0 to L do begin
V[i,j]:='=R[-1]+R[-2]';
V[i,j]:='=R[-1]+R[-2]';
end;
for i := 2 to L do begin
V[0,i]:='=C[-1]+C[-2]';
V[1,i]:='=C[-1]+C[-2]';
end;
V[0,0]:=1;
V[0,1]:=1;
V[1,0]:=1;
V[1,1]:=2;
//Sh.Range['A1:K11'].FormulaLocal:=V;
Sh.Range[Sh.Cells[1,1],Sh.Cells[L+1,L+1]].FormulaLocal:=V;
VarClear(V);
> как добавить программно нужное количество строк в таблицу
Sh.Range[Sh.Cells[3,3],Sh.Cells[3+L-1,3]].EntireRow.Insert(xlShiftUp,EmptyParam);
Sh.Range[Sh.Cells[3,3],Sh.Cells[3,3+L-1]].EntireColumn.Insert(xlShiftToLeft,EmptyParam);
robt5 (2013-09-21 21:52:00) [3]
> Office-man (21.09.13 00:21) [7]
*.csv
Office-man (2013-09-21 00:28:00) [4]Все-таки решил сделать "на лету" с рисованием. Благодаря примеру получилось! СПАСИБО Влад! :-) А как можно задать формулы для ячеек таблицы в самой программе? Небольшой пример пожалуйста если можно...
Office-man (2013-09-21 00:21:00) [5]>robt5 О чем идет речь?
robt5 (2013-09-20 22:32:00) [6]а про "точку с запятой" чо забыли?
[ВладОшин] (2013-09-20 22:18:00) [7]поищи по форуму, кто-то выкладывал свой класс Excell с xml
к сожалению, мне не подошла, т.к. экселей много у нас всяких, а оле везде одинаково работает
Office-man (2013-09-20 21:14:00) [8]Эксель в Офис 2010 не дает почему то в ХМЛ сохранять, говорит не хватает ХМЛ-сопоставлений :( С чем их едят? :)
Вася (2013-09-20 12:18:00) [9]Можно без OLE - сохранить в формате xls(xml) - создай образец нужного тебе документа в экселе, сохрани как таблицу xml, потом открываешь в блокноте и смотришь что куда и как пишется. дальше в своей проге создавай текстовый документ, туда пишешь все что нужно, переименовываешm в xls.
Office-man (2013-09-20 08:38:00) [10]Спасибо большое! Сегодня попробую... :-)
[ВладОшин] (2013-09-20 00:22:00) [11]Чертить так
uses ComObj;
procedure TForm1.btn1Click(Sender: TObject);
var
E, W, S: Variant;
C1, C2, R: Variant;
begin
E := CreateOleObject('Excel.Application');
W := E.WorkBooks.Add;
S := W.WorkSheets[1];
C1 := S.Cells[2, 2];
C2 := S.Cells[3, 2];
R := S.Range[C1, C2];
R.Borders[3].LineStyle := 1;
E.visible := True;
end;
Константы тут
http://technet.microsoft.com/en-us/library/ee692886.aspx