Автор | Сообщение |
|
| |
Пост N: 3298
Зарегистрирован: 17.05.05
|
|
Отправлено: 11.07.13 16:27. Заголовок: TXT TO XLS
Возможно ли средствами Harbour перегнать файл из формата TXT в EXCEL ? В TXT файлике накладная.
|
|
|
Ответов - 4
[только новые]
|
|
|
| постоянный участник
|
Пост N: 2902
Зарегистрирован: 12.09.06
|
|
Отправлено: 11.07.13 16:43. Заголовок: Наверно нужно постро..
Наверно нужно построчно обрабатывать и кидать на форму XLS.... Или сделать готовый файл-форму на XLS и записывать из текстового файла суммы и нужные строки ....
|
|
|
|
| |
Пост N: 3299
Зарегистрирован: 17.05.05
|
|
Отправлено: 11.07.13 16:54. Заголовок: Andrey Мысль с шабл..
Andrey Мысль с шаблоном XLS была , но хочется обойтись малой кровью ;) Есть клиенты в программе после проведения накладной на которого , необходимо сбрасывать ему на электронку накладную в формате XLS (аналог накладной что вылазит на печать)
|
|
|
|
| |
Пост N: 78
Зарегистрирован: 20.02.11
|
|
Отправлено: 11.07.13 17:41. Заголовок: Придется переформатироватьв Excele
Dima пишет: цитата: | Возможно ли средствами Harbour перегнать файл из формата TXT в EXCEL ? |
| Можно конечно, но если к текстовике есть псевдографика - придется ее убивать , а форму в Экселе форматировать. 1. Через OLE (с шаблоном или нет ) все делается хорошо, но OLE - тормознутый механизм. 2. Можно ускорить с шаблоном , если Эксель шаблон сохранить не в XLS(X) , а в XML - .т.к. это текстовик, строковые операции его потрошат быстро. Через XML когда-то рисовал шапку отчеты- шапка из шаблона, а тело генерил строковыми операциями. Потом что получалось открывал Экселем и на печать. Выигрыш на длинных таблицах даже не в разы, а на порядки )) Короткую накладную проще через OLE. PS. Лучше не заниматься переводом TXT в XLS, а сразу писать XLS данными из базы.
|
|
|
|
| |
Пост N: 3300
Зарегистрирован: 17.05.05
|
|
Отправлено: 11.07.13 17:46. Заголовок: Andrey пишет: Навер..
Andrey пишет: цитата: | Наверно нужно построчно обрабатывать и кидать на форму XLS. |
| Так и сделал , все получилось. Haz Спасибо за идею ! Накидал тестовый пример. proc main local st local oWorkBook local osheet local osheets local i:=1 private oExcel REQUEST HB_LANG_RU866 HB_LANGSELECT("RU866") REQUEST HB_CODEPAGE_RU1251 hb_cdpSelect( "RU1251" ) if !Start_Excel() return endif oExcel:Visible := .f. oExcel:DisplayAlerts:=.f. oWorkBook := oExcel:WorkBooks:Add() oSheet := oExcel:ActiveSheet() oSheet:Cells:Font:Name :="Lucida Console" oSheet:Cells:Font:Size :=10 if hb_fuse("oleg.doc")#-1 do while !hb_feof() st:=Hb_oemtoansi(hb_freadln()) oSheet:Cells( i, 1 ):Value :=st i++ hb_fskip() enddo Hb_fuse() endif oWorkBook:saveas(hb_CurDrive()+":\"+CurDir()+"\nakl.xls") oWorkBook:close(.f.,,.f.) oExcel:Quit() oWorkBook:=nil oSheet:=nil oExcel:=nil return func Start_Excel() Local Res:=.f. #ifndef __XHARBOUR__ #xcommand TRY => BEGIN SEQUENCE WITH {|e| Break( e )} #xcommand CATCH [<!oErr!>] => RECOVER [USING <oErr>] <-oErr-> #endif TRY oExcel := GetActiveObject( "Excel.Application" ) oExcel:DisplayAlerts:=.f. Res:=.t. CATCH Res:=.f. TRY oExcel := CreateObject( "Excel.Application" ) Res:=.t. CATCH Res:=.f. END END Return Res
|
|
|
|