Страница 1 из 1

Export, Import данных в Excel и из Excel'a

Добавлено: 11 Октябрь 2005, 12:43
StillZero
по поводу Excel недавно отписывал одному человеку, тут чтение, но запись вообще похожа:

1. определяешь данные, в секции данных

Код: Выделить всё

XlsFEQ LONG       ! OLE-контрол
DataQueue   QUEUE ! очередь данных
A              LONG
B              STRING(20)
            END
2. создаешь xls-файл

3. делаешь кнопку "поехали" а на ней код:

Код: Выделить всё

 XlsFEQ = CREATE(0, CREATE:OLE) ! создали OLE-контрол
 XlsFEQ{PROP:Create} = 'Excel.Application' ! сказали, что будем юзать
 XlsFEQ{'Application.Workbooks.Open("C:\Clarion6\APP\Temp\FromExcel\temp.xls")'} ! открыли, полный путь нужен
 XlsFEQ{'Application.Visible'} = TRUE ! показали Excel

 free(DataQueue) ! чтение в очередь
 loop row#=1 to 10 ! 10 рядов
    DataQueue.A=XlsFEQ{'Application.Cells(' & row# & ',1).Value'} ! два столбца
    DataQueue.B=XlsFEQ{'Application.Cells(' & row# & ',2).Value'}
    add(DataQueue)
 end

 loop 3 times ! уничтожили контрол
    destroy(XlsFEQ)
 end
советую почитать также это http://zero.clarionlife.net/Articles/PT/OleWord.shtml

и посмотреть примеры на clarionlife.net в файловом архиве

удачи...

Добавлено: 11 Октябрь 2005, 12:46
StillZero
нашел тут у себя пример класса для вывода в Excel, должен работать по идее, на крайний случай посмотришь как это делается

Добавлено: 11 Октябрь 2005, 13:47
Caня
Спасибо! Все доходчиво и понятно.
Попробую.

Добавлено: 13 Октябрь 2005, 10:51
iva
А в 6-ке этот пример не работает ...

Архипов Игорь

Добавлено: 08 Июль 2006, 7:09
lexa
StillZero
Здравствуйте.

В догонку к теме.
При импорте из Excel все без проблем, но при экспорте у меня возникло следующее неудобство.

Последующую часть кода я прикрепил к кнопке:

!!!!!!!!!!! запись Файла в Excel !!!!!!!!!!!!
xls_name"='C:\Файл №' & Format(Today(),@D05-)

XlsOLE#=CREATE(0,CREATE:OLE)
XlsOLE#{PROP:Create}='Excel.Application'
XlsOLE#{'Application.Visible'}=False
XlsOLE#{'Application.Workbooks.Add'}

.......
....... записываю в таблицу Excel
.......

XlsOLE#{'Application.ActiveWorkbook.SaveAs("' & xls_name" & '")'}
XlsOLE#{'ActiveWindow.Close(1)'}
XlsOLE#{'QUIT'}
XlsOLE#{Prop:Deactivate}

Вопрос? При записи на существующий файл Excel выдает окно(дословно текст окна):
"Файл '.......' уже существует в данном месте. Заменить?
Далее варианты: Да Нет Отмена
Если 'Да' - все нормально перезаписывается, если 'Нет' или 'Отмена' - это же окно появляется еще два раза.
Подскажите, что я не так делаю?
У меня C55EE(ABC),XP-Prof-SP2,Office-2003.

Добавлено: 08 Июль 2006, 12:24
Игорь Столяров
Все правильно - MS Excel будет спрашивать подтверждение перезаписи, если файл существует.
Можно сильно не заморачиваясь, просто вставить Remove(Clip(xls_name)) перед сохранением - и все ... ;)

Добавлено: 08 Июль 2006, 14:55
StillZero
насчет того, что два раза спрашивает хз пробей этого Excel-я :)
по моему, чтобы отключить такого рода сообщения надо добавить после

Код: Выделить всё

XlsOLE#=CREATE(0,CREATE:OLE) 
XlsOLE#{PROP:Create}='Excel.Application'
такую строку

Код: Выделить всё

XlsOLE#{PROP:ReportException} = FALSE

Добавлено: 12 Июль 2006, 5:47
lexa
Можно сильно не заморачиваясь, просто вставить Remove(Clip(xls_name)) перед сохранением - и все ...
Данный вариант не подходит в моем случае. Если файл существует, то нужно отказаться от перезаписи.

Код: Выделить всё

XlsOLE#{PROP:ReportException} = FALSE
Не помогает, все равно Excel переспрашивает 3 раза(выше указал 2 раза - плохо подсчитал).

Добавлено: 12 Июль 2006, 7:42
Игорь Столяров
Вот так обычно и бывает: человек спрашивает простой вопрос, ты даешь на него очевидный ответ, а потом начинаю проясняться подробности и что там уже навернуто ХЗ что ... ;)

Уважаемый ! Может Вы нормально поставите задачу полностью ? И если Вы не можете склеить логику сохранения XLS файла из трех шагов - мы Вам ее распишем ... ? Ждемс ...

Добавлено: 13 Июль 2006, 2:08
lexa
Уважаемый ! Может Вы нормально поставите задачу полностью ? И если Вы не можете склеить логику сохранения XLS файла из трех шагов - мы Вам ее распишем ... ? Ждемс ...
1.Разные пользователи в неопределенные моменты времени формируют отчет, который программа должна записать в файл Excel.
2.Имя этого файла будет формироваться автоматически, примерно так - ТЕМА & текущая дата & текущий час.
3.Если этот файл уже сформирован одним пользователем, другой пользователь при определенных условиях либо перезаписывает этот файл, либо его не трогает.

Вопрос такой - почему при отказе или отмене перезаписи, Excel выдает еще три раза одно и то же окно подтверждения и как можно от этого избавиться?

Добавлено: 24 Июль 2006, 9:30
Игорь Столяров
Насколько я понимаю - весь вопрос в 3-ем пункте. У меня вопросов при перезаписи не задается. Давай маленький пример создания файла, и его записи - как ты это делаешь, буду сравнивать со своим кодом. С другой стороны - описанный ранее вариант с удалением файла перед записью тоже будет работать. Главное, что бы файл не был открыт другим юзером в сети ...