:: Не фоксом единым
Про Excel с фоксом и без ...
tata

Сообщений: 3459
Откуда: Казань
Дата регистрации: 23.10.2005
Напишу пока здесь.
Потом модераторы решат, куда эту тему пристроить.
В нашей региональной базе данных 17 районов.
Любые порайонные выборки создают файлы типа 01.xls,...,17.xls.

И почему-то я всегда оказываюсь "крайней": мне поручают все эти 17 файлов собрать в один.
Собираю, конечно, но все время гложет мысль об автоматизации сего процесса.

17 файлов всегда одинаковой структуры, но этих выборок может быть много: то умершие, то переплатчики, то иностранные граждане.
Т.е. 17 файлов с одной структурой, 17 с другой и т.д.
Как бы из первого файлика считать структуру, а потом в цикле к нему еще 16 добавить?
Может, есть уже такие программки ? (это я, чтобы не изобретать велосипед).
А если нет, может идеи есть, как это сделать?
Ratings: 0 negative/0 positive
Re: Про Excel с фоксом и без ...
Mitchman

Сообщений: 9978
Откуда: Николаев
Дата регистрации: 24.05.2002
пытаюсь сообразить но на Васике Ехелея поидее две строчки - если я правильно понял задачу -

т.е.берем первый файл и к нему добавляем строки из следующих - за вычетом заголовков - главное определить кол-во строк и столбцов - но это по заполнению мона я так понимаю


------------------
-
«свидомые украинцы озабочены не столько созданием украинской культуры, сколько уничтожением русской»
-
Олесь Бузина
Ratings: 0 negative/0 positive
Re: Про Excel с фоксом и без ...
Alsim

Сообщений: 3636
Откуда: Екатеринбург
Дата регистрации: 17.11.2004
У меня похожая задачка была недавно, только проще.
Обсчитать по прайсу накладные и положить в приёмный акт Бухучета.
Файлы накладных и прайсов присылают в екселе.
Накладных два вида. Две разные структуры.
Прайсов тоже два и тоже отличаются.
Считываю файлы по очереди и по характерным признакам "ДуКасю" (Do Case) и разруливаю куда и как во временную таблицу.
ps
Клиентка довольна, вот только те, которые присылают ей накладные...
это уже другая история. Могут распечатать накладную, в ней ручкой поправить цену, количество... и отправить бумажный и электронный не исправленный
Прибил бы, но она всё равно довольна. Это не руками обсчитывать как раньше построчно.
Ratings: 0 negative/0 positive
Re: Про Excel с фоксом и без ...
Simple777

Сообщений: 33855
Дата регистрации: 05.11.2006
"ДуКасю" - это реально крута!.. :xixi:
Ratings: 0 negative/0 positive
Re: Про Excel с фоксом и без ...
of63

Сообщений: 25244
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
Если в CSV сохранять файл (средствами автоматизации Excel), то потом фоксом (FREAD FGETS, ALINES, GETWORDNUM) его легче можно парсить, соединять...

Можно сохранять не в CSV, а в формате Excel-95, тогда этот файл можно читать фоксом командой IMPORT (не требует знания формата файла, в отличии от APPEND FROM), и накапливать результат в DBF.

Можно сразу выгружать в DBF, но эту возможность отрубили в новых офисах.

Если цель - получить DBF из всех 17 файлов (в доп. колонке - имя файла, или номер района), то фоксом удобно. Это как скриптовый язык по отношению к Excel, плюс возможности фокса...

Если просто обьединить 17 файлов в 1, то любой ЯП, в т.ч. фокс, который эмулирует человеческие действия:
Ctrl-A
Ctrl-C
перейти в накопительное окно Эксель
Ctrl-End
Ctrl-V

Интересно выглядит также чтение данных Excel через _CLIPTEXT фокса:
в Excele делаем Ctrl-A, Ctrl-C
далее в командном окне фокса
? _CLIPTEXT && или LEFT(_CLIPTEXT, 1000) для посмотреть. Разделитель полей - CHR(9), строк - CHR(13) [+CHR(10)]



Исправлено 1 раз(а). Последнее : of63, 02.12.18 14:55
Ratings: 0 negative/0 positive
Re: Про Excel с фоксом и без ...
tata

Сообщений: 3459
Откуда: Казань
Дата регистрации: 23.10.2005
of63
Если в CSV сохранять файл (средствами автоматизации Excel), то потом фоксом (FREAD FGETS, ALINES, GETWORDNUM) его легче можно парсить, соединять...
Можно сохранять не в CSV, а в формате Excel-95, тогда этот файл можно читать фоксом командой IMPORT (не требует знания формата файла, в отличии от APPEND FROM), и накапливать результат в DBF.

Можно сразу выгружать в DBF, но эту возможность отрубили в новых офисах.

Если цель - получить DBF из всех 17 файлов (в доп. колонке - имя файла, или номер района), то фоксом удобно. Это как скриптовый язык по отношению к Excel, плюс возможности фокса...

Если просто обьединить 17 файлов в 1, то любой ЯП, в т.ч. фокс, который эмулирует человеческие действия:
Ctrl-A
Ctrl-C
перейти в накопительное окно Эксель
Ctrl-End
Ctrl-V

Интересно выглядит также чтение данных Excel через _CLIPTEXT фокса:
в Excele делаем Ctrl-A, Ctrl-C
далее в командном окне фокса
? _CLIPTEXT && или LEFT(_CLIPTEXT, 1000) для посмотреть. Разделитель полей - CHR(9), строк - CHR(13) [+CHR(10)]

Ctrl-A
Ctrl-C
перейти в накопительное окно Эксель
Ctrl-End
Ctrl-V

Вот именно этот процесс я и хочу автоматизировать.
Причем для таблиц с разной структурой.
Что-то ничего не приходит в голову, устала, наверное.
Мама болеет сильно.
CSV исключается, ПО позволяет выгружать только в XLS.
Ratings: 0 negative/0 positive
Re: Про Excel с фоксом и без ...
Божья_коровка

Сообщений: 25731
Дата регистрации: 23.08.2001
tata
Вот именно этот процесс я и хочу автоматизировать.
Причем для таблиц с разной структурой.
Что-то ничего не приходит в голову, устала, наверное.
CSV исключается, ПО позволяет выгружать только в XLS.
Татьяна вы же говорили, что 17 файлов с одинаковой структурой, потом еще 17 с другой..

Цитата:
17 файлов всегда одинаковой структуры, но этих выборок может быть много: то умершие, то переплатчики, то иностранные граждане.
Т.е. 17 файлов с одной структурой, 17 с другой и т.д.
Собирайте 17 с одной структурой в один файл. Потом следующие 17 файлов с другой структурой в другой файл-накопитель.
Т.е. для каждой структуры создавайте свой файл-накопитель.


------------------
Жись, она как зёбра, полоса белая, полоса черная, а мне всегда задница достается...
Ratings: 0 negative/0 positive
Re: Про Excel с фоксом и без ...
Alsim

Сообщений: 3636
Откуда: Екатеринбург
Дата регистрации: 17.11.2004
Теперь понял конечную задачу.
То есть прокрутить 17*17 присылаемых файлов в формате Ексель и на выходе получить один общий Екселеский файл с конечной стандартной для вас структурой?
***
У нас был на старой работе ас васика для приложений.
Очень петрил в Екселе и на нём все любил делать, в том числе подключение к нашим Досовским данным Бухучета по DBA (или чего-то там подобное) и получение в итоге отчётов. Потом запил и надолго, и вся эта кухня мне досталась...
Как я со всем этим натрахался… Прибил бы, честное слово, этого Васикофила! ))))
***
Потому, я бы нарисовал бы всё это на фоксе.
Перебирал бы файлы в папке, открывал, читал бы каждый, собирал во времянку и потом записывал результат в тот же ексель или ещё куда.
+ Не надо голову ломать с екселем. Прогу можно отдать кому угодно, вроде секратарши. Пусть тупо собирает данные.
Удачи!
Ratings: 0 negative/0 positive
Re: Про Excel с фоксом и без ...
of63

Сообщений: 25244
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
> CSV исключается, ПО позволяет выгружать только в XLS.
Таня, это не так. У нас исходный материал - XLS-ки. Если мы используем фокс + автоматизацию Excel
oExel = CREATEOBJECT("Excel.Application")

то мы можем открывать
oExcel.WorkBooks.Add && создавать новый лист
oExcel.WorkBooks.Add(полное_имя_файла) && открывать файлы в новом листе
oExcel.WorkBooks.Open(полное_имя_файла) && тоже самое но в текущем листе
m.oExcel.Workbooks.OpenText && открывать произвольные текстовые файлы, состоящие из строк с разделителями
m.oExcel.Sheets.Add && просто создать новый лист
и сохранять файл(ы) в любом формате (кроме DBF), в т.ч. в CSV
m.v = VAL(m.oExcel.Version) && под Office2007 - 12.0, ранее был 11.0
z = полное имя сохраняемого файла
j = UPPER(JUSTEXT(z))
m.j = ICASE(m.j=="DBF", 11,; && DBF 4. В Excel 2007 (v12) и свежее вызовет ошибку!
m.j=="CSV", 6,; && xlCSV, формат CSV, разделитель ТСЗ. Внимание! Чтобы разделителем стала именно ТСЗ (а не ЗПТ), добавьте параметр Local:=True
m.j=="TXT", -4158,; && xlCurrentPlatformText
m.j=="HTML", 44,; && xlHtml
m.j=="XML", 46,; && xlXMLSpreadsheet (экселевский формат XML)
m.j=="XLTX" .AND. m.v>=12, 54,; && xlOpenXMLTemplate Office2007
m.j=="XLT", 17,; && Template
m.j=="XLSX" .AND. m.v>=12, 51,; && [xlOpenXMLWorkbook] Office2007
m.v>=12, 56,; && сохраняем в формате Excel8 (Excel97-2003)
.NULL.) && сохраняем в умолчательном формате, более ранние Office
DO CASE
CASE ISNULL(m.j)
m.oExcel.ActiveWorkBook.SaveAs(m.z)
CASE UPPER(JUSTEXT(m.z))=="CSV"
m.oExcel.ActiveWorkBook.SaveAs(m.z, m.j, , , , , , , , , ,.T.) && Local:=True
OTHERWISE
m.oExcel.ActiveWorkBook.SaveAs(m.z, m.j)
ENDCASE



Исправлено 1 раз(а). Последнее : of63, 03.12.18 08:16
Ratings: 0 negative/1 positive
Re: Про Excel с фоксом и без ...
ВладимирС

Сообщений: 1693
Дата регистрации: 03.11.2005
tata
...
Ctrl-A
Ctrl-C
перейти в накопительное окно Эксель
Ctrl-End
Ctrl-V
Извиняюсь, но хотя бы это ведь можно автоматизировать. В том же VB.
Хм... Но мои предложения:
1. Постараться заставить делать файлы в одной структуре. Потом автоматизация не очень будет сложная.
2. Если не получится с п.1. Пусть будут несколько структур, например 2. Надо понять как их различать и тоже вроде собирать не очень сложно должно быть.
Ratings: 0 negative/0 positive
Re: Про Excel с фоксом и без ...
Гулин Федор

Сообщений: 4640
Откуда: Минск
Дата регистрации: 24.10.2002
Alsim
Теперь понял конечную задачу.
То есть прокрутить 17*17 присылаемых файлов в формате Ексель и на выходе получить один общий Екселеский файл с конечной стандартной для вас структурой?
***
У нас был на старой работе ас васика для приложений.
Очень петрил в Екселе и на нём все любил делать, в том числе подключение к нашим Досовским данным Бухучета по DBA (или чего-то там подобное) и получение в итоге отчётов. Потом запил и надолго, и вся эта кухня мне досталась...
Как я со всем этим натрахался… Прибил бы, честное слово, этого Васикофила! ))))
***
Потому, я бы нарисовал бы всё это на фоксе.
Перебирал бы файлы в папке, открывал, читал бы каждый, собирал во времянку и потом записывал результат в тот же ексель или ещё куда.
+ Не надо голову ломать с екселем.
Прогу можно отдать кому угодно, вроде секратарши. Пусть тупо собирает данные.
Удачи!

зная фокс - ну и писать на нем
файлы (csv,excel)-- (? dbf с историей Если хочется историю иметь что и когда ) ->
dbf1 для экспорта -- > csv или ексель
в csv По моему 1 команда - в ексель - ну код на пол-страницы (если в екселе БОЛЬШЕ чем 1 лист - то циклом.)

имхо самописка - на 3-4 часа работы есл

главные проблемы я вижу что если где то в 1 файле СТРУКТУРА НЕ СОВПАДЕТ
то процесс наркоется - ну так для себе
Ratings: 0 negative/0 positive
Re: Про Excel с фоксом и без ...
AndyNigmatec
Автор

Сообщений: 1573
Откуда: Волгоград
Дата регистрации: 28.06.2015
если структура известна (разбираема на ограниченное кол-во вариантов) - то оченно шустро импорт работает через массив.
типа:

1) выяснили стурктуру дока
2) подготовили курсор такой структуры - cCursor
3) далее

...
laData=loExcel.Workbooks("нужная").Sheets(nSheet).UsedRange.Value
SELECT cCursor
APPEND FROM ARRAY laData
...



Исправлено 1 раз(а). Последнее : AndyNigmatec, 03.12.18 15:31
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 8 (Гостей: 8)

© 2000-2024 Fox Club 
Яндекс.Метрика