powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Удаление последней строки в таблице EXCEL
8 сообщений из 8, страница 1 из 1
Удаление последней строки в таблице EXCEL
    #37464599
npp2202
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени
Понимаю, что уже неоднократно поднимался этот вопрос, перечитала все на форуме, перепробовала кучу вариантов, не получается, помогите кто может, в Фоксе я новичек, многого еще не знаю
Проблема такая: есть файл 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"
...
Рейтинг: 0 / 0
Удаление последней строки в таблице EXCEL
    #37464663
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я же вроде там 11252003 ответ давал...
Каюсь, грешен - последнюю строку вам надо искать, например, так:
Код: plaintext
LastRow = lNDoc.Sheets( 1 ).Usedrange.Rows.Row + lNDoc.Sheets( 1 ).Usedrange.Rows.Count -  1 
Или для конкретного столбца (например, второго):
Код: plaintext
LastRow = lNDoc.Sheets( 1 ).Cells(lNDoc.Sheets( 1 ).Rows.Count,  2 ).End(xlUp).Row
(Кто не знает - xlUp = 0xFFFFEFBE)

Кроме того, с объединением можно попроще:
Код: plaintext
lNDoc.Sheets( 1 ).Cells.MergeCells = .F.
но вообще-то, и этого не требуется - вы же эту строку все равно удаляете.

Можно не отключать .DisplayAlerts, а использовать .Close(.T.)

Ну и не поленюсь, вернусь к своему совету 11252790
...
Рейтинг: 0 / 0
Удаление последней строки в таблице EXCEL
    #37464698
npp2202
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AndreTM,

Спасибо огромное
...
Рейтинг: 0 / 0
Удаление последней строки в таблице EXCEL
    #37464765
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А по поводу совета делать запрос через 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.
lFile = GETFILE('xls','Выберите файл','Открыть', 0 ,'')
if lFile=""
 return
endif
lHandle=SQLSTRINGCONNECT("Driver={Microsoft Excel Driver (*.xls)};DBQ=" + lFile)
if lHandle<= 0 
 * Не удалось открыть соединение
 return
endif
* Вторым параметром в SQLExec может быть указан ваш курсор
if SQLEXEC(lHandle,"SELECT * FROM [Page1$A2:F]") <= 0 
 * Не удалось выполнить запрос

else
 * Обрабатываем курсор SQLRESULT в текущей рабочей области, например
 GO BOTTOM
 DELETE
 * или так
 SELECT CTOD(mline(Дата_оплаты, 1 )) as DatOpl, SUM(Сумма) as SumOpl ;
 FROM sqlresult ;
 WHERE !ISNULL(Id_платежа) ;
 GROUP BY  1 
 * Имена полей можно сделать латиницей, если прописать [...] as ... в запросе SQLEXEC
endif
SQLDISCONNECT(lHandle)
...
Рейтинг: 0 / 0
Удаление последней строки в таблице EXCEL
    #37464791
npp2202
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AndreTM,

это для меня вообще дремучий лес... :(
но все равно спасибо
...
Рейтинг: 0 / 0
Удаление последней строки в таблице EXCEL
    #37464836
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почему дремучий лес-то?
Вы пытаетесь работать на VFP. Вы все равно должны будете изучить возможности Фокса. Зачем вам разбираться с объектными моделями других приложений, запускать экземляры, разбираться с ними - если вам от них нужно только одно - получать данные (для чего, собственно, первоначально предназначены именно СУБД, а не электронные таблицы или, упаси Бже, текстовые редакторы )
При этом приведенный выше код решает вашу задачу в 3 + (1) операции самого Фокса (плюс знание синтаксиса Select-SQL для Excel-провайдера), в то время, как ваш - предполагает "неначальные" знания еще и VBA и объектной модели Excel...
...
Рейтинг: 0 / 0
Удаление последней строки в таблице EXCEL
    #37464857
npp2202
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AndreTM,

Наверное, Вы правы...
Пожалуй поищу литературу, может и вправду получится проще...
Но это чуть позже, сроки горят (как всегда), вот и приходится на лету изучать и Fox, и VBA, если б не форум..
...
Рейтинг: 0 / 0
Удаление последней строки в таблице EXCEL
    #37464860
npp2202
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за помощь AndreTM
я думаю это не последний мой вопрос, до знаний еще очень далеко
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Удаление последней строки в таблице EXCEL
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]