:: Visual Foxpro, Foxpro for DOS
Помогите разобраться с Excel
ZenTigra

Сообщений: 514
Дата регистрации: 03.12.2004
Помогите, очень срочно нужно, уже потратил два дня на изучение данного вопроса, а на работу дали всего неделю.

А проблема вот в чем, есть книга Excel, в ней очень много листов (63шт). И на каждом своя таблица, или несколько.
Файлов 10 шт, от разных организаций, нужно их свести в один, то есть в сводную таблицу проставить сумму по этих файлах.
Все файлы 100% идентичные.

Подскажите команды как открыть таблицу Excel и прочитать значение в ячейке?

Я думаю скопировать все значения из excel файлов в промежуточный dbf файл, а потом записать из него в главную таблицу
Ratings: 0 negative/0 positive
Re: Помогите разобраться с Excel
of63

Сообщений: 25256
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
Фоксом можно читать файлы Екселя, но только формата 95 года, т.е предварительно надо пересохранить файл в старом формате эксел.
А так, произвольный файл экселя читают тем же экселем, типа:
m.oExcel = CreateObject("Excel.Application")
m.oExcel.WorkBooks.Open(файл)
m.v = m.oExcel.Sheets(1).Cells(i,j).Value && чтение ячейки (или .Text)

через драйвер ODBC тоже можно прочитать файл...Вообще, эксель - это целый мир условностей и фишек. А что именно вызывает затруднения?
Ratings: 0 negative/0 positive
Re: Помогите разобраться с Excel
ZenTigra

Сообщений: 514
Дата регистрации: 03.12.2004
Все, спасибо, вы уже ответили на вопрос
Ratings: 0 negative/0 positive
Re: Помогите разобраться с Excel
AndyNigmatec

Сообщений: 1574
Откуда: Волгоград
Дата регистрации: 28.06.2015
Как вам уже ответили - самый простой путь это использовать автоматизацию самого экселя. Минус этого подхода - энтот самый эксель должен быть установлен и вдобавок еще не совсем древний (чтобы банально xlsx умел открывать).

Ну еще для ускорения процесса (раз уж у вас данные в файлах и на листах идентичные) - то лучше забирать значения не поячеечно - а сразу диапазоном, т.е. типа такого (не дословно):

lcFile='...нужный файл....'
loExcel=CREATEOBJECT("EXCEL.APPLICATION")
loExcel.Visible=.F.
loExcel.DisplayAlerts=.F.
loExcel.Workbooks.Open(lcFile)
lcWbName=JUSTFNAME(lcFile)
lcSheetsCount=loExcel.Workbooks(lcWbName).Sheets.Count
FOR lSheet=1 TO lcSheetsCount
&& название листа если нужно
* loExcel.oExcel.Workbooks(lcWbName).Sheets(lSheet).Name
* забираем все данные с листа в массив
laData=loExcel.oExcel.Workbooks(lcWbName).Sheets(lSheet).UsedRange.Value
* далее создаем курсор необходимо структурой под наши данные
SELECT 0
CREATE CURSOR cData (field1 i, field2 c(80), ... и т.п.)
APPEND FROM ARRAY laData
* делаем с полученным курсором что надо
ENDFOR
loExcel.Workbooks(lcWbName).Close(.F.)
loExcel.Quit()
Ratings: 0 negative/0 positive
Re: Помогите разобраться с Excel
Grin
Автор

Сообщений: 1083
Откуда: Kiev
Дата регистрации: 05.12.2000
2ZenTigra

посмотри еще в сторону ODBC драйвера для Excel
я когдато решал подобную задачу через sqlconnect и далеше select * from ...
собирал данные в один курсор, ну а дальше выгрузка в шблон из курсора
Ratings: 0 negative/0 positive


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

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

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