Excel в Delphi, цикл по строкам
Начал изучать редактирование excel книг через delphi по началу было все понятно, пока не столкнулся с одним примером:
Вот картинки что есть и что надо получить: до http://s1.ipicture.ru/uploads/20120908/EN8U64Hh.bmp после http://s1.ipicture.ru/uploads/20120908/Et6puQCQ.bmp Задание: 1) После каждой строки добавить 3 пустых строки 2) Объединение 3) С чем пока совсем глухо это в образовавшейся так сказать "матрице"(выделена жирным) вокруг одного числа, к примеру 2,45 заполнить 7 близлежащих ячеек значениями 2,45+-10%от этого числа(так же с 4,56 и 7,67) цифры и задание выдумано мной для практики ну значит по сути все что надо мне сделать это разобраться с проходом цикла по строкам(так как я не знаю какое конечное кол-во строк в документе) Как я себе это представил Код:
procedure TForm1.Button1Click(Sender: TObject); Так же пробовал с объединением: Код:
for a_:=1 to 5 do p.s читал форумы и книгу ВАСИЛИЯ КОРНЯКОВА ПРОГРАММИРОВАНИЕ ДОКУМЕНТОВ И ПРИЛОЖЕНИЙ MS OFFICE в DELPHI про массивы ничего((( |
Ну во
1. если конечное кол-во строк в документе ты не знаешь то целесообразнее было бы использовать while. 2. ты сам ответил на свой вопрос, задай матрицу в документе по столбикам и строкам. 3. цикл объединения неправильно задан. попробуй разбей все на отдельные процедуры и функции. и действуй от этого уже. |
А как в delphi писать цикл пока не конец excel документа?
и ещё что-то я не понял про матрицу. Просто в ячейках и текст может быть. Почему не правильно? Если цикл не правильно работает, то почему он здесь работает? randomize; for a_:=1 to 5 do begin excel.WorkBooks[1].WorkSheets[1].Cells(a_,4):=random(200); end; |
вот справочник которым я пользуюсь не первый год
справочник функций и процедур - Delphi |
Цитата:
excel.WorkBooks[1].WorkSheets[1].Rows['4:4'].Select; excel.WorkBooks[1].WorkSheets[1].Selection.Insert(Shift:=xlDown); |
какую ошибку выдаёт? скинь текст программы
|
Уже нет ошибки вот что получилось
excel.WorkBooks[1].WorkSheets[1].Rows[i].Select; excel.Selection.Insert(Shift:=xlDown); Но все равно не могу понять как цикл организовать. Мне надо так, что бы 3 строки вставлялись после 1ой строки и потом 3 строки после 2ой(т.е. цикл после добавления первых 3ёх должен перепрыгнуть через 1 строку и т.д.) |
Я уже и так делал:
n:=excel.ActiveCell.Row; i:=2; while i <= n do begin excel.WorkBooks[1].WorkSheets[1].Rows[i].Select; excel.Selection.Insert(Shift:=xlDown); excel.WorkBooks[1].WorkSheets[1].Rows[i].Select; excel.Selection.Insert(Shift:=xlDown); excel.WorkBooks[1].WorkSheets[1].Rows[i].Select; excel.Selection.Insert(Shift:=xlDown); int(i); end; и сяк но не работает |
У меня на этом компе компилятора нету,
попробуй цикл for, но задай так что бы i:= i + 1. и выйди из цикла break (не особо это хорошо конечно, но что делать) |
странно а почему такой цикл вообще не хочет работать?
n:=excel.ActiveCell.Row; i:=2; while i <= n do begin excel.WorkBooks[1].WorkSheets[1].Rows[i].Select; excel.Selection.Insert(Shift:=xlDown); end; |
Часовой пояс GMT +4, время: 10:48. |
Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.