Форум: "Основная";
Текущий архив: 2004.04.18;
Скачать: [xml.tar.bz2];
ВнизБыстродействие 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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.034 c