Автор | Сообщение |
|
| |
Пост N: 38
Зарегистрирован: 12.02.08
|
|
Отправлено: 12.05.08 09:34. Заголовок: excel
Хотелось-бы узнать, есть-ли эффективный ( быстрый ) способ экспорта dbf -> xls? Реальный!
|
|
|
Ответов - 49
, стр:
1
2
3
All
[только новые]
|
|
|
| |
Пост N: 39
Зарегистрирован: 12.02.08
|
|
Отправлено: 12.05.08 10:04. Заголовок: Уточняю. У моих ко..
Уточняю. У моих конкурентов - Delphi - берем примерно 10000 записей: 3-4 сек., у меня: 1.5 мин !!!!!!
|
|
|
|
| |
Пост N: 40
Зарегистрирован: 12.02.08
|
|
Отправлено: 12.05.08 10:12. Заголовок: Читал другие фо..
Читал другие форумы- везде, что-то, нужно использовать кривое, чужое и т. п.. А у нас ?
|
|
|
|
| |
Пост N: 41
Зарегистрирован: 12.02.08
|
|
Отправлено: 12.05.08 10:34. Заголовок: Небожители - АУ !!..
Небожители - АУ !!!!!!!!
|
|
|
|
| постоянный участник
|
Пост N: 441
Зарегистрирован: 09.10.06
|
|
Отправлено: 12.05.08 10:38. Заголовок: Что хотим экспортиро..
Что хотим экспортировать, структура таблицы. И каким способом делаем это сейчас?
|
|
|
|
| |
Пост N: 42
Зарегистрирован: 12.02.08
|
|
Отправлено: 12.05.08 10:48. Заголовок: Что-угодно ( прайс,..
Что-угодно ( прайс, база номенклатуры, накладные и т. д. и т.п. ). Пользуюсь : oExcel := TOleAuto():New( "Excel.Application" ) if Ole2TxtError() != 'S_OK' MsgStop('Excel is not available!', PROGRAM ) RETURN endif oExcel:Visible := .F. oExcel:WorkBooks:Add() oSheet := oExcel:Get( "ActiveSheet" ) Aeval( (cAlias)->( DBstruct(cAlias) ), { |e,i| oSheet:Cells( nCell, i ):Value := e[DBS_NAME] } ) do while !(cAlias)->( EoF() ) nCell++ aColumns := (cAlias)->( Scatter() ) aEval( aColumns, { |e,i| oSheet:Cells( nCell, i ):Value := e } ) (cAlias)->( DBskip() ) enddo oBook := oExcel:Get("ActiveWorkBook") oBook:Title := cAlias oBook:Subject := cAlias oBook:SaveAs(cFile) oExcel:Quit() из MiniGUI\SAMPLES\Applications\DBFview
|
|
|
|
| постоянный участник
|
Пост N: 442
Зарегистрирован: 09.10.06
|
|
Отправлено: 12.05.08 11:07. Заголовок: Реализация OLE в Har..
Реализация OLE в Harbour не очень быстрая. Если действительно нужна скорость выгрузки, можно использовать прямую запись в файл. Естественно структура xls 2003 или 2007 сложная. Но в сети довольно много примеров генерации файлов biff 2.1 (до Excel 5.0). Такой файл легко открывается всеми версиями Excel - от 97 до 2007. К тому же такой способ можно использовать на компьютере без установленного MS Office. Если же Excel установлен, то просто открываем такой файл и сохраняем в более современной версии.
|
|
|
|
| |
Пост N: 43
Зарегистрирован: 12.02.08
|
|
Отправлено: 12.05.08 12:11. Заголовок: Но ведь это - не ..
Но ведь это - не метод. Вы мудрые где-тож - чего-тож уже надыбали поделитесь А если без шуток - опять у нас нет решения на простые для других вопросы
|
|
|
|
| постоянный участник
|
Пост N: 443
Зарегистрирован: 09.10.06
|
|
Отправлено: 12.05.08 12:35. Заголовок: valery2 пишет: Но в..
valery2 пишет: Что значит не метод? И что значит - опять у нас нет решения на простые для других вопросы?
|
|
|
|
| Администратор
|
Пост N: 907
Зарегистрирован: 23.05.05
|
|
Отправлено: 12.05.08 13:06. Заголовок: valery2 пишет: поде..
valery2 пишет: В сырцах TSBrowse есть метод Excel2 - из грида формируется документ xls Можно его использовать, конечно, модифицировав для данного случая
|
|
|
|
| |
Пост N: 44
Зарегистрирован: 12.02.08
|
|
Отправлено: 12.05.08 15:10. Заголовок: Pasha пишет: В сырц..
Pasha пишет: цитата: | В сырцах TSBrowse есть метод Excel2 - из грида формируется документ xls Можно его использовать, конечно, модифицировав для данного случая |
|
Спасбо! Честное слово. Но там же работы - на неделю, а доводка - на месяц(ы) Неужели никто реально не решал эту проблемму ? Потом, TSBrowse - с ним тоже пробовал. Результат - тот-же. Может я что-то не так ?
|
|
|
|
| постоянный участник
|
Пост N: 444
Зарегистрирован: 09.10.06
|
|
Отправлено: 12.05.08 15:55. Заголовок: valery2 пишет: Неуж..
valery2 пишет: цитата: | Неужели никто реально не решал эту проблемму ? |
| Боюсь, что ни у кого таких глобальных проблем не возникало. Откройте любую базу, сделайте COPY TO temp. xls DELIMITED WITH TAB откройте в Excel вновь созданный temp. xls Используйте OLE вместо "напильника" Получите тот же результат цитата: | oExcel := TOleAuto():New( "Excel.Application" ) if Ole2TxtError() != 'S_OK' MsgStop('Excel is not available!', PROGRAM ) RETURN endif oExcel:Visible := .F. oExcel:WorkBooks:Add() oSheet := oExcel:Get( "ActiveSheet" ) Aeval( (cAlias)->( DBstruct(cAlias) ), { |e,i| oSheet:Cells( nCell, i ):Value := e[DBS_NAME] } ) do while !(cAlias)->( EoF() ) nCell++ aColumns := (cAlias)->( Scatter() ) aEval( aColumns, { |e,i| oSheet:Cells( nCell, i ):Value := e } ) (cAlias)->( DBskip() ) enddo oBook := oExcel:Get("ActiveWorkBook") oBook:Title := cAlias oBook:Subject := cAlias oBook:SaveAs(cFile) oExcel:Quit() |
| но гораздо быстрее. P.S. Реализация метода Excel 2 в TSBrowse - это та же генерация файла biff 2.1.
|
|
|
|
|
| |
Пост N: 45
Зарегистрирован: 12.02.08
|
|
Отправлено: 12.05.08 16:04. Заголовок: Вот за ЭТО - СПАСИ..
Вот за ЭТО - СПАСИБО !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
|
|
| |
Пост N: 46
Зарегистрирован: 12.02.08
|
|
Отправлено: 13.05.08 09:33. Заголовок: Прошу пощения, но о..
Прошу пощения, но опять непонятки. Я, мягко говоря, не спец ни с excel, ни с ole.Петр пишет: цитата: | сделайте COPY TO temp.xls DELIMITED WITH TAB откройте в Excel вновь созданный temp.xls |
| сделал Петр пишет: цитата: | Используйте OLE вместо "напильника" |
| а вот тут - я тупорылый. temp.xls - ведь текстовый. И что сним делать ?
|
|
|
|
| постоянный участник
|
Пост N: 566
Зарегистрирован: 12.09.06
|
|
Отправлено: 13.05.08 11:08. Заголовок: valery2 пишет: а во..
valery2 пишет: цитата: | а вот тут - я тупорылый. temp.xls - ведь текстовый. И что сним делать ? |
| Открывай его в Екселе вплоть до: RUN excel temp.xls Или через Оле вызывать Ексел и открывать этот файл. Пример можете смотреть в ?:\xHarbour\tests\testole.prg Успехов ....
|
|
|
|
| |
Пост N: 47
Зарегистрирован: 12.02.08
|
|
Отправлено: 13.05.08 11:29. Заголовок: Спасибо, Andrey.
Открывается-то элементарно цитата: | oExcel:WorkBooks:Open( CurDrive() + ":\" + curdir()+"\temp.xls" ) |
|
А вот дальше... Дохожу до цитата: | oBook:SaveAs(kyda+"\ttt.xls") |
|
Сыплются запросы на сохранение, замену. Забыл сказать: вначале Нужно, чтобы весь просесс был скрытым для юзера. А - oBook:SaveAs(kyda+"\ttt.xls") - сначала задает вопрос "сохранить ttt.xls", затем сообщает, что такой уже есть ( он успел уже кинуть туда ttt.xls, но с текстовыми потрохами), потом выдет putfile, с установками на txt, и, только, указав все атрибуты, получаю нужное. Нужно-то все молча.
|
|
|
|
| |
Пост N: 48
Зарегистрирован: 12.02.08
|
|
Отправлено: 13.05.08 12:02. Заголовок: Вот текст :procedu..
Вот текст : цитата: | procedure dbxls(kyda) Local oExcel, oSheet, oBook oExcel := TOleAuto():New( "Excel.Application" ) if Ole2TxtError() != 'S_OK' MsgStop('Excel не найден!') RETURN endif COPY TO temp.xls DELIMITED WITH TAB oExcel:Visible := .F. oExcel:WorkBooks:Open( CurDrive() + ":\" + curdir()+"\temp.xls" ) oSheet := oExcel:Get( "ActiveSheet" ) oBook := oExcel:Get("ActiveWorkBook") oBook:SaveAs(kyda+"\ttt.xls") oExcel:Quit() return |
|
Где-что-нитак?
|
|
|
|
| постоянный участник
|
Пост N: 568
Зарегистрирован: 12.09.06
|
|
Отправлено: 13.05.08 13:39. Заголовок: valery2 пишет: снач..
valery2 пишет: цитата: | сначала задает вопрос "сохранить ttt.xls", затем сообщает, что такой уже есть ( он успел уже кинуть туда ttt.xls, но с текстовыми потрохами), потом выдет putfile, с установками на txt, и, только, указав все атрибуты, получаю нужное. |
| Перед записью в ttt.xls удаляй сам такой файл, не надейся на ЕКСЕЛЬ !!! И посмотри здесь на форуме как сохранить файл для WORD'a - технология одна ОЛЕ !!!
|
|
|
|
| |
Пост N: 49
Зарегистрирован: 12.02.08
|
|
Отправлено: 13.05.08 13:55. Заголовок: Andrey пишет: Перед..
Andrey пишет: цитата: | Перед записью в ttt.xls удаляй сам такой файл, не надейся на ЕКСЕЛЬ !!! |
|
Посмотрите на мою проц - в этом вся загвоздка!!!!! Перед цитата: | oBook:SaveAs(kyda+"\ttt.xls") |
|
ничего не происходит! Вот далее - все то, что перечисленно выше. Удалять-то нечего!?
|
|
|
|
| |
Пост N: 50
Зарегистрирован: 12.02.08
|
|
Отправлено: 13.05.08 14:16. Заголовок: :sm33: :sm85: :..
|
|
|
|
| |
Пост N: 51
Зарегистрирован: 12.02.08
|
|
Отправлено: 13.05.08 15:34. Заголовок: Нашел на форуме Sav..
Нашел на форуме цитата: | SaveAs(FileName, FileFormat, LockComments, Password, AddToRecentFiles, WritePassword, ReadOnlyRecommended, EmbedTrueTypeFonts, SaveNativePictureFormat, SaveFormsData, SaveAsAOCELetter, Encoding, InsertLineBreaks, AllowSubstitutions, LineEnding, AddBiDiMarks) |
|
Но, если с 1-м параметром все ясно, 2-й ---- не знаю что подставить- все ошибка. За 3-й еще не брался.
|
|
|
Ответов - 49
, стр:
1
2
3
All
[только новые]
|
|