Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.04.18;
Скачать: CL | DM;

Вниз

Быстродействие Excel   Найти похожие ветки 

 
ai ©   (2004-04-01 13:17) [0]

При работе с Excel можно использовать vararray для получения/задания данных Range следующим образом Data := Range[...].Value.
Как получать/задавать значения атрибутов Range (шрифты, условное форматировние, рамки,...) в виде vararray?
При получении/задании атрибутов Range по одной ячейке быстродействие слишком уж низкое.


 
Романов Р.В. ©   (2004-04-01 13:24) [1]

vararray тут не причем. Определи диапазон ячеек и задай ему нужные атрибуты.

procedure SetEdge(Range: OleVariant);
begin
 Range.Borders[xlEdgeLeft].LineStyle := xlContinuous;
 Range.Borders[xlEdgeLeft].Weight := xlMedium;
 Range.Borders[xlEdgeTop].LineStyle := xlContinuous;
 Range.Borders[xlEdgeTop].Weight := xlMedium;
 Range.Borders[xlEdgeBottom].LineStyle := xlContinuous;
 Range.Borders[xlEdgeBottom].Weight := xlMedium;
 Range.Borders[xlEdgeRight].LineStyle := xlContinuous;
 Range.Borders[xlEdgeRight].Weight := xlMedium;
 if Range.Columns.Count > 1 then
 begin
   Range.Borders[xlInsideVertical].LineStyle := xlContinuous;
   Range.Borders[xlInsideVertical].Weight := xlThin;
 end;
 if Range.Rows.Count > 1 then
 begin
   Range.Borders[xlInsideHorizontal].LineStyle := xlContinuous;
   Range.Borders[xlInsideHorizontal].Weight := xlThin;
 end;
end;


 
ai ©   (2004-04-01 13:40) [2]

У меня следующая специфика задачи - нужно считать данные и атрибуты со страницы Excel, произвести определенные изменения и записать все на страницу обратно. Причем объем исходной и результирующей страниц достаточно большие.
Изначально все изменения проводились средствами Excel через COM, но за счет того что Excel выполняется в другом адресном простанстве на межпроцесное взаимодействие тратится очень много времени. Так операция Range.Copy() выполняется 10мс, Sheet.InsertRows 6мс для небольших объемов данных, в то же время при использовании ActiveX компонента Formula1, на подобные операции тратится в больше чем 1000 раз меньше времени.
Поэтому я хочу считать все данные с атрибутами, произвести необходимые изменения в памяти и "загнать" все назад.


 
Тимохов ©   (2004-04-01 13:49) [3]

офис какой?
Если 2003, хр, или 2002, то можно делать через xml - очень быстро.


 
ai ©   (2004-04-01 13:55) [4]

Шел расчет на поддержку 98-го и выше, но в случае если через xml - действительно очень быстро :), то можно забить и перевести всех в добробольно принудительном порядке на 2003, хр, или 2002.
Можешь расказать подробнее как?


 
Тимохов ©   (2004-04-01 13:59) [5]


> ai ©   (01.04.04 13:55) [4]

подробнее не могу - долго, скорее не реально.
вот доки по схемам офиса.
изучай.

http://www.microsoft.com/office/xml/default.mspx

http://www.microsoft.com/downloads/details.aspx?FamilyId=FE118952-3547-420A-A412-00A2662442D9&displaylang=en

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnexcl2k2/html/odc_xmlss.asp

используй msxml парсер. он у тебя уже стоит.



Страницы: 1 вся ветка

Текущий архив: 2004.04.18;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.037 c
3-1079581964
alexEagle
2004-03-18 06:52
2004.04.18
Многопоточность и компоненты IB


3-1080046885
Лысый
2004-03-23 16:01
2004.04.18
Select ...


14-1080169387
dr Tr0jan
2004-03-25 02:03
2004.04.18
Почему Муз-ТV вещает в PAL, а MAXIMUM закрыли?


14-1080497703
Def_E
2004-03-28 22:15
2004.04.18
Случайные числа


1-1080804602
V-Isa
2004-04-01 11:30
2004.04.18
Свойство компонента.