Страница 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'
такую строку
Добавлено: 12 Июль 2006, 5:47
lexa
Можно сильно не заморачиваясь, просто вставить Remove(Clip(xls_name)) перед сохранением - и все ...
Данный вариант не подходит в моем случае. Если файл существует, то нужно отказаться от перезаписи.
Не помогает, все равно Excel переспрашивает 3 раза(выше указал 2 раза - плохо подсчитал).
Добавлено: 12 Июль 2006, 7:42
Игорь Столяров
Вот так обычно и бывает: человек спрашивает простой вопрос, ты даешь на него очевидный ответ, а потом начинаю проясняться подробности и что там уже навернуто ХЗ что ...
Уважаемый ! Может Вы нормально поставите задачу полностью ? И если Вы не можете склеить логику сохранения XLS файла из трех шагов - мы Вам ее распишем ... ? Ждемс ...
Добавлено: 13 Июль 2006, 2:08
lexa
Уважаемый ! Может Вы нормально поставите задачу полностью ? И если Вы не можете склеить логику сохранения XLS файла из трех шагов - мы Вам ее распишем ... ? Ждемс ...
1.Разные пользователи в неопределенные моменты времени формируют отчет, который программа должна записать в файл Excel.
2.Имя этого файла будет формироваться автоматически, примерно так - ТЕМА & текущая дата & текущий час.
3.Если этот файл уже сформирован одним пользователем, другой пользователь при определенных условиях либо перезаписывает этот файл, либо его не трогает.
Вопрос такой - почему при отказе или отмене перезаписи, Excel выдает еще
три раза одно и то же окно подтверждения и как можно от этого избавиться?
Добавлено: 24 Июль 2006, 9:30
Игорь Столяров
Насколько я понимаю - весь вопрос в 3-ем пункте. У меня вопросов при перезаписи не задается. Давай маленький пример создания файла, и его записи - как ты это делаешь, буду сравнивать со своим кодом. С другой стороны - описанный ранее вариант с удалением файла перед записью тоже будет работать. Главное, что бы файл не был открыт другим юзером в сети ...