Главная страница
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.023 c
3-1079609866
stas
2004-03-18 14:37
2004.04.18
Расширенные хранимые процедуры под MSSQL SERVER2000


3-1079606654
Чайник.
2004-03-18 13:44
2004.04.18
DBComboBox?


1-1080721853
DmitryNekl
2004-03-31 12:30
2004.04.18
Как сделать невидимым окно?


14-1080269816
Думкин
2004-03-26 05:56
2004.04.18
С днем рождения! 26 марта.


14-1080293741
able
2004-03-26 12:35
2004.04.18
AOH