Главная страница
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.022 c
3-1080125220
JohnS
2004-03-24 13:47
2004.04.18
Paradox and поле с именем DATE


3-1079876707
Karlson
2004-03-21 16:45
2004.04.18
Скрипт


1-1080888417
Layner
2004-04-02 10:46
2004.04.18
Как прекратить поток?


6-1076423644
launch
2004-02-10 17:34
2004.04.18
Поймать окончание загрузки страницы в TWebBrowser


1-1080953470
olhovik
2004-04-03 04:51
2004.04.18
Математические функции