Форум » [x]Harbour » TXT TO XLS » Ответить

TXT TO XLS

Dima: Возможно ли средствами Harbour перегнать файл из формата TXT в EXCEL ? В TXT файлике накладная.

Ответов - 4

Andrey: Наверно нужно построчно обрабатывать и кидать на форму XLS.... Или сделать готовый файл-форму на XLS и записывать из текстового файла суммы и нужные строки ....

Dima: Andrey Мысль с шаблоном XLS была , но хочется обойтись малой кровью ;) Есть клиенты в программе после проведения накладной на которого , необходимо сбрасывать ему на электронку накладную в формате XLS (аналог накладной что вылазит на печать)

Haz: Dima пишет: Возможно ли средствами Harbour перегнать файл из формата TXT в EXCEL ? Можно конечно, но если к текстовике есть псевдографика - придется ее убивать , а форму в Экселе форматировать. 1. Через OLE (с шаблоном или нет ) все делается хорошо, но OLE - тормознутый механизм. 2. Можно ускорить с шаблоном , если Эксель шаблон сохранить не в XLS(X) , а в XML - .т.к. это текстовик, строковые операции его потрошат быстро. Через XML когда-то рисовал шапку отчеты- шапка из шаблона, а тело генерил строковыми операциями. Потом что получалось открывал Экселем и на печать. Выигрыш на длинных таблицах даже не в разы, а на порядки )) Короткую накладную проще через OLE. PS. Лучше не заниматься переводом TXT в XLS, а сразу писать XLS данными из базы.


Dima: Andrey пишет: Наверно нужно построчно обрабатывать и кидать на форму XLS. Так и сделал , все получилось. Haz Спасибо за идею ! Накидал тестовый пример. [pre2] 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 [/pre2]



полная версия страницы