Форум: "Основная";
Текущий архив: 2003.05.12;
Скачать: [xml.tar.bz2];
Внизсортировка Excel Найти похожие ветки
← →
Ncm (2003-04-29 07:49) [0]Нужно выполнить сортировку в екселевском файле по конкретному столбцу из Дельфи через ExcelApplication
← →
GLUKAS (2003-04-29 07:55) [1]Запиши в Excel макрос с сортировкой.... посмотри что там ехсеl написал... процетируй в Delphi...
← →
Ncm (2003-04-29 08:08) [2]так вот не получаеЦЦа :(
а вот такая идея, можно ли как нибудь эмулировать нажатие кнопки сотр в Excel"e из Delphi ?
← →
GLUKAS (2003-04-29 08:20) [3]Можно эмулировать нажатие любой кнопки (Кроме Reset 8).
Нажать: keybd_event(Key,0,0,0);
Отпустить :keybd_event(Key,0,KEYEVENTF_KEYUP,0);
это для обычных клавш типа 123... абв...
Всякие Альты... - надо параметр указывать....
← →
ncm (2003-04-29 08:39) [4]неее нам не надо кнопку на клавиатуре, надо нажать кнопку Sort (сортировки) в Excel"e
← →
Babay (2003-04-29 08:53) [5]->так вот не получаеЦЦа :(
... не значит - нельзя. Сам гдето ошибаешся. Ищи.
GLUKAS дал тебе самый лучший способ.
← →
GLUKAS (2003-04-29 08:53) [6]TExcelApplication.Range.Sort(...)
← →
GLUKAS (2003-04-29 09:01) [7]TExcelApplication.Range.Sort(...)
← →
Ncm (2003-04-29 09:08) [8]да эт понятно, там какая то фигня с параметрами все время в рантайм ругается на преобразование типов, пользую вот так:
Excel.Columns.Sort(Excel.Range["E3", EmptyParam], xlAscending, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, xlNo, 1, False, xlTopToBottom, EmptyParam, EmptyParam, EmptyParam, EmptyParam);
есть у вас работающий пример??
← →
Mitechka (2003-04-29 09:26) [9]С TExcelApplication.Range.Sort есть беда... У меня такое ощущение, что там в диспинтерфейсе не тот номер метода указан :/
Вот примерчик как точно работает, надо только расскомментировать:
procedure TFormMain.ActionTestExecute(Sender: TObject);
var {XLAppl: Excel97.TExcelApplication;}
WB: Excel97._WorkBook;
WS: Excel97._WorkSheet; {Для раннего связывания с Excel97.pas}
var X,Sh: variant; {Для позднего связывания}
Row,Col: integer;
s: string;
begin
try {Открытие Excel ранним связыванием и насерание туда}
XLAppl.Connect;
XLAppl.Visible[0]:=true;
XLAppl.DisplayAlerts[0]:=false;
WB:=XLAppl.WorkBooks.Add(xlWBatWorkSheet,0);
WB.Activate(0);
WS:=WB.WorkSheets.Get_Item(1) as _WorkSheet;
for Row:=1 to 15 do
for Col:=1 to 10 do
begin
WS.Cells.Item[Row,Col].Value:=
chr(ord("A")+random(20))+" Row="+IntToStr(Row)+" Col="+IntToStr(Col);
end;
WS.Range["A1","J10"].Font.Color:=clRed;
WS.Range["A1","J10"].Font.Bold:=true;
ShowMessage("A?");
{Теперь по-позднему обращаемся}
{Способ 1: Поищем с самого начала, работают все 3, надо только снять комменты}
{try X:=GetActiveOleObject("Excel.Application");
except X:=CreateOleObject("Excel.Application");
end;
X.Visible:=true;
Sh:=X.Workbooks[1].WorkSheets[1];}
{Способ 2: Сначала возьмем интерфейс на книгу, а потом на лист}
{X:=OleVariant(XLAppl.Workbooks[1]);
Sh:=X.WorkSheets[1];}
{Cпособ3: Сразу возьмем интерфейс на лист}
Sh:=OleVariant(XLAppl.WorkBooks[1].WorkSheets[1]);
{Обращаемся по-позднему}
for Row:=1 to 15 do
for Col:=1 to 10 do
begin
s:=Sh.Cells[Row,Col];
Sh.Cells[Row,Col]:="!"+s;
end;
Sh.Range[Sh.Cells[3,1],Sh.Cells[5,10]]. Sort(Sh.Cells[1,1]);
ShowMessage("B!");
finally {Закрытие Excel}
XLAppl.Quit;
XLAppl.Disconnect;
end;
end;
← →
alehan (2003-04-29 14:13) [10]Так вы, я не понял, разобрались или нет?
RowRange:=ISheet.Range["A1","A200"].EntireRow;
RowRange.Sort(ISheet.Range["A1","A200"], xlAscending,
EmptyParam, EmptyParam, xlDescending,
EmptyParam, xlAscending, xlNo, EmptyParam,
True, xlTopToBottom);
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.05.12;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.006 c