|
Удаление последней строки в таблице EXCEL
|
|||
---|---|---|---|
#18+
Доброго времени Понимаю, что уже неоднократно поднимался этот вопрос, перечитала все на форуме, перепробовала кучу вариантов, не получается, помогите кто может, в Фоксе я новичек, многого еще не знаю Проблема такая: есть файл EXCEL (в приложении), необходимо: 1) удалить первые две строки - сделала 2) удалить последнюю строку - я так понимаю надо перейти в последнюю заполненную ячейку и удалить эту строку (может ошибаюсь) 3) первая колонка имеет неопределенный формат данных, надо перевести в цифру - впринципе я это сама смогу сделать 4) выгрузка в DBF - это тоже не беда. Может кто подскажет как удалить последнюю строку в exl документе? Изначально в таблице последняя строка имеет объединение ячеек, я от этого избавилась выделив весь лист и убрав объединение ячеек. Код прилагаю: LOCAL lExl as EXCEL.Application lExl = CREATEOBJECT("EXCEL.APPLICATION") IF VARTYPE(lExl) != "O" MESSAGEBOX('Невозможно запустить приложение!',0,'Внимание!!!') RETURN .F. ENDIF ** Открываем файл отчета LOCAL lBook AS Excel.Workbook lfile = GETFILE('xls','Выберите файл','Открыть',0,'') lBook = lExl.workbooks.open(lfile) && Копируем в шаблон lNDoc=lExl.WorkBooks.add() lBook.Sheets(1).Copy(lNDoc.Sheets(1)) lBook.Close && Удаляем лишние листы for i=lNDoc.Sheets.Count to 2 step -1 lNDoc.Sheets(i).delete ENDFOR ** УДАЛЯЕМ ЛИШНИЕ СТРОКИ lExl.rows("1:2").delete() && удаляем первые две строки y = lExl.Columns.Count && общее кол-во столбцов x = lExl.Rows.Count && общее кол-во строк lExl.Range(lExl.Cells(1,1),lExl.Cells(x,y)).MergeCells=.F. && отменяем объединение ** Сохранение в EXL97/03 IF VAL(lExl.VERSION)<11 lNDoc.SAVEAS("c:\r01.xls",-4143,"","",0,0) ELSE lNDoc.SAVEAS("c:\r01.xls",-4143,"","",0,0) ENDIF ** Закрываем книгу и документ lExl.DisplayAlerts = .F. lNDoc.Close() lExl.quit() ** Импорт в DBF IMPORT FROM c:\r01.xls TYPE XL8 SHEET "Page1" ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2011, 03:37 |
|
Удаление последней строки в таблице EXCEL
|
|||
---|---|---|---|
#18+
Я же вроде там 11252003 ответ давал... Каюсь, грешен - последнюю строку вам надо искать, например, так: Код: plaintext
Код: plaintext
Кроме того, с объединением можно попроще: Код: plaintext
Можно не отключать .DisplayAlerts, а использовать .Close(.T.) Ну и не поленюсь, вернусь к своему совету 11252790 ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2011, 09:08 |
|
Удаление последней строки в таблице EXCEL
|
|||
---|---|---|---|
#18+
AndreTM, Спасибо огромное ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2011, 09:40 |
|
Удаление последней строки в таблице EXCEL
|
|||
---|---|---|---|
#18+
А по поводу совета делать запрос через ADO... Вот, смотрите: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24.
... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2011, 10:33 |
|
Удаление последней строки в таблице EXCEL
|
|||
---|---|---|---|
#18+
AndreTM, это для меня вообще дремучий лес... :( но все равно спасибо ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2011, 10:48 |
|
Удаление последней строки в таблице EXCEL
|
|||
---|---|---|---|
#18+
Почему дремучий лес-то? Вы пытаетесь работать на VFP. Вы все равно должны будете изучить возможности Фокса. Зачем вам разбираться с объектными моделями других приложений, запускать экземляры, разбираться с ними - если вам от них нужно только одно - получать данные (для чего, собственно, первоначально предназначены именно СУБД, а не электронные таблицы или, упаси Бже, текстовые редакторы ) При этом приведенный выше код решает вашу задачу в 3 + (1) операции самого Фокса (плюс знание синтаксиса Select-SQL для Excel-провайдера), в то время, как ваш - предполагает "неначальные" знания еще и VBA и объектной модели Excel... ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2011, 11:07 |
|
Удаление последней строки в таблице EXCEL
|
|||
---|---|---|---|
#18+
AndreTM, Наверное, Вы правы... Пожалуй поищу литературу, может и вправду получится проще... Но это чуть позже, сроки горят (как всегда), вот и приходится на лету изучать и Fox, и VBA, если б не форум.. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2011, 11:20 |
|
|
start [/forum/topic.php?fid=41&fpage=68&tid=1584108]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
81ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
59ms |
get tp. blocked users: |
1ms |
others: | 15ms |
total: | 202ms |
0 / 0 |