Автор | Сообщение |
|
| |
Пост N: 4
Зарегистрирован: 05.08.08
|
|
Отправлено: 12.05.09 10:16. Заголовок: Нужен конвертер DBF в XLS
Добрый день, нужен конвертер формата DBF (консольный xHarbour) в формат XLS, с перекодировкой из 866 в 1251 Спасибо...
|
|
|
Новых ответов нет
, стр:
1
2
3
4
5
6
All
[см. все]
|
|
|
| |
Пост N: 26
Зарегистрирован: 09.09.11
|
|
Отправлено: 04.10.11 08:40. Заголовок: Прикрепил файл... то..
Прикрепил файл... только ссылку не запомнил Function Xls_Cvod Local oExcel,oSheet,oBook,oAs Local oExcel_S,oSheet_S,oBook_S,oAs_1 Main_File:=Mar10+'Rpt_Azs' // сводный отчет oExcel_S:=ToleAuto():New("Excel.Application") oExcel_S:Workbooks:Open(Main_File) oBook_S :=oExcel_S:ActiveWorkBook oExcel_S:Set( "DisplayAlerts",.F.) oAs_S :=oExcel_S:ActiveSheet() oSheet_S:=oBook_S :Sheets(1) oExcel_S:Visible := .T. // 1 xls отчет File_Ex:='01_Table' Xls_Copy:=Mar12+File_Ex oExcel :Workbooks:Open(Xls_Copy) oExcel :Set( "DisplayAlerts",.F.) oAs:= oExcel:ActiveSheet() oRange := oExcel:ActiveCell:SpecialCells(xlLastCell) cRecno :=oRange:Row cColumn:=oRange:Column oAs:Range(oAs:Cells(2,2),oAs:Cells(cRecno,cColumn-4)):Select() oAs:Range(oAs:Cells(2,2),oAs:Cells(cRecno,cColumn-4)):Copy() // переход на сводный отчет oAs_S:Cells(5,1):Select() oAs_S:Paste() Hb_gtInfo(HB_GTI_CLIPBOARDDATA, "") // очистка буфера обмена oExcel:CutCopyMode := .F. oExcel:Quit() // закрытие локального xls файла // 2 xls отчет File_Ex:='02_table' Xls_Copy:=Mar12+File_Ex oExcel :Workbooks:Open(Xls_Copy) Hb_gtInfo(HB_GTI_CLIPBOARDDATA, "") // очистка буфера обмена oAs:= oExcel:ActiveSheet() oExcel :Visible := .T. oExcel :Set( "DisplayAlerts",.F.) oRange := oExcel:ActiveCell:SpecialCells(xlLastCell) cRecno :=oRange:Row cColumn:=oRange:Column oAs:Range(oAs:Cells(2,2),oAs:Cells(cRecno,cColumn)):Select() oAs:Range(oAs:Cells(2,2),oAs:Cells(cRecno,cColumn)):Copy() oExcel:Quit() // переход на сводный отчет oBook_S :=oExcel_S:ActiveWorkBook oAs_S :=oExcel:ActiveSheet() oSheet_S:=oBook_S :Sheets(2) oAs_S :Cells(5,1):Select() oAs_S:Paste() oAs_S:SaveAs(Main_File,Excel97_10) Hb_gtInfo(HB_GTI_CLIPBOARDDATA, "") oExcel:CutCopyMode := .F. oAs_S:SaveAs(Main_File,Excel97_10) // запись сводного отчета oExcel_S:Quit()
|
|
|
|
| |
Пост N: 27
Зарегистрирован: 09.09.11
|
|
Отправлено: 04.10.11 08:42. Заголовок: „O„Љ„y„q„{„p „Ѓ„‚„y ..
„O„Љ„y„q„{„p „Ѓ„‚„y „Ђ„‚„p„q„Ђ„„„{„u 2 xls „†„p„z„|„p „~„p „ѓ„„„‚„Ђ„{„u oAs_S :Cells(5,1):Select() |Error BASE/1004 Class: 'NIL' has no exported method: CELLS Arguments: ( [ 1] = | |Type: U [ 2] = Type: N Val: 5 [ 3] = Type: N Val: 1) „ |
|
|
|
|
| |
Пост N: 28
Зарегистрирован: 09.09.11
|
|
Отправлено: 04.10.11 08:43. Заголовок: ссылка на файл http:..
|
|
|
|
| |
Пост N: 29
Зарегистрирован: 09.09.11
|
|
Отправлено: 04.10.11 08:53. Заголовок: Нашел ошибку, в стро..
Нашел ошибку, в строке oAs_S :=oExcel:ActiveSheet() записал как oAs_S :=oExcel_S:ActiveSheet(), теперь ругается на oAs_S:Paste() Error Excel.Application:ACTIVESHEET/3 DISP_E_MEMBERNOTFOUND: PASTE Arguments: (| |)
|
|
|
|
| |
Пост N: 31
Зарегистрирован: 09.09.11
|
|
Отправлено: 04.10.11 12:43. Заголовок: Получилось, спасибо ..
Получилось, спасибо за советы и терпение.... Теперь вопрос как снять выделение диапазона на листах сводного отчета? Использую команду Hb_gtInfo(HB_GTI_CLIPBOARDDATA, "") // очистка буфера обмена oExcel_S:CutCopyMode :=.F. // снятие выделения диапазона ячеек все листы, которые получены через копирование ячеек из локальных XLS остаются с выделенным диапазоном.
|
|
|
|
| |
Пост N: 33
Зарегистрирован: 09.09.11
|
|
Отправлено: 04.10.11 13:33. Заголовок: Дективировал выделен..
Дективировал выделение ячеек, через выбор ячейки на листе.... Всем успехов и удачи.
|
|
|
|
| постоянный участник
|
Пост N: 1896
Зарегистрирован: 12.09.06
|
|
Отправлено: 04.10.11 22:33. Заголовок: Oskar_AAA пишет: Де..
Oskar_AAA пишет: цитата: | Дективировал выделение ячеек, через выбор ячейки на листе.... |
| А как ? Нам тоже интересно !
|
|
|
|
| |
Пост N: 35
Зарегистрирован: 09.09.11
|
|
Отправлено: 05.10.11 05:04. Заголовок: Andrey, установил ку..
Andrey, установил куросор или другими словами активировал ячейку... oSheet_S:=oBook_S :Sheets(3):Select() // выбор листа и активация нужного листа oBook_S :=oExcel_S:ActiveWorkBook oAs_S :=oExcel_S:ActiveSheet() oSheet_S:=oBook_S :Sheets(3) oAs_S :Cells(5,1):Select() // установка нужной ячейки с которой надо вставлять из буфера oSheet_S:Paste() // собственно вставка oAs_S :Cells(5,1):Select() // активация ячейки
|
|
|
|
| |
Пост N: 37
Зарегистрирован: 09.09.11
|
|
Отправлено: 07.10.11 06:08. Заголовок: Добрый день, возникл..
Добрый день, возникла интересная ситуация. На 1 ПК установлена русская версия Windows 7, SP1 и Office 2010, на 2 ПК XP, SP1 и Office 2003. На этих ПК установлены xHarbour, BCC5 одинаковые. Так вот на Windows 7, SP1 и Office 2010 обработка сводного отчета XLS проходит нормально, а на другом вываливается по ошибке фрагмент кода обработки oSheet_S:=oBook_S :Sheets(1):Select() oBook_S :=oExcel_S:ActiveWorkBook oAs_S :=oExcel_S:ActiveSheet() oSheet_S:=oBook_S :Sheets(1) oAs_S :Cells(5,1):Select() Day_Excel:=Mar12+Dtos(Cdata)+'Day' // формирование имени файла отчета oAs_S:SaveAs(Day_Excel,Excel97_10) // запись файла отчета oExcel_S:Quit()
|
|
|
|
| |
Пост N: 40
Зарегистрирован: 19.08.10
|
|
Отправлено: 07.10.11 08:26. Заголовок: Oskar_AAA пишет: oA..
Oskar_AAA пишет: цитата: | oAs_S:SaveAs(Day_Excel,Excel97_10) // запись файла отчета |
| А Office 2003 разве работает с форматом Office 2010 Надо бы сохранять в формате 97-2003 (или же 97-2000). Как вариант - поставить на остальные 2 компа Office 2010.
|
|
|
|
| Администратор
|
Пост N: 2119
Зарегистрирован: 23.05.05
|
|
Отправлено: 07.10.11 08:34. Заголовок: Огласите, что за оши..
Огласите, что за ошибка и что такое Excel 97_10 ? Какая-то переменная ?
|
|
|
|
|
| |
Пост N: 41
Зарегистрирован: 19.08.10
|
|
Отправлено: 07.10.11 10:44. Заголовок: Pasha пишет: что та..
Pasha пишет: цитата: | что такое Excel 97_10 ? Какая-то переменная ? |
| цитата: | oAs_S:SaveAs(Day_Excel,Excel97_10) |
| Это из VBA: параметр, указывающий, в каком формате Excel будет сохранять файл с именем, указанным в первом параметре. В данном случае Excel97_10, то есть в формате Office 2010. А Oskar_AAA пытается сохранить в этом формате из Office 2003, на что тот реагирует ошибкой. Надо бы ставить Excel97_03, но тогда при попытке запустить под Office 2000/97 опять ошибка вылезет. Параметр Excel97 более универсален: будет работать с 97 по 2010 включительно.
|
|
|
|
| |
Пост N: 38
Зарегистрирован: 09.09.11
|
|
Отправлено: 07.10.11 13:17. Заголовок: Excel97_10 - это ест..
Excel97_10 - это есть переменная, котора принимает значение 43 или 56 в зависимости от версии MS Excel, прописана в настройках своего ПО. программа вываливается на Exce 2003 ТОЛЬКО при обработке двух XLS отчетов одновременно, т.е . открывает локальный отчет, берет из него данные и ВНОСИТ их в уже ОТКРЫТЫЙ сводный отчет на определенный лист. Далее закрывается локальный отчет и копия oExcel, котрым он был открыт. Далее опять запускается новая копия Excel и открывается другой локальный отчет и опять берет из него данные и ВНОСИТ их в уже ОТКРЫТЫЙ сводный отчет на определенный лист. Попытка открыть Два файла использую одну копию Excel у меня вылетает ошибка. Как открывать два и более файлов, использую одну копию Excel (как определить и различать переменные oExcel, oBook, oSheets, oAs, oRange)? Как записать и закрыть определеный (Документ) файл XLS, при этом не Закрывая само Приложение Excel? пока делаю так: Local oExcel,oSheet,oBook,oAs Local oExcel_S,oSheet_S,oBook_S,oAs_1 // svod XLS Main_File:=Mar10+'Rpt_Azs' oExcel_S:=tOleAuto():New("Excel.Application") oExcel_S:Workbooks:Open(Main_File) oBook_S :=oExcel_S:ActiveWorkBook oAs_S :=oExcel_S:ActiveSheet() oSheet_S:=oBook_S :Sheets(1):Select() oExcel_S:Set("DisplayAlerts",.F.) oExcel_S:Visible := .F. // local XLS 1 File_Ex:='01_Table' Xls_Copy:=Mar12+File_Ex oExcel :=tOleAuto():New("Excel.Application") oExcel :Workbooks:Open(Xls_Copy) oExcel :Set("DisplayAlerts",.F.) oExcel :CutCopyMode := .F. oAs:= oExcel:ActiveSheet() oRange :=oExcel:ActiveCell:SpecialCells(xlLastCell) cRecno :=oRange:Row cColumn:=oRange:Column /// /// oExcel_S:CutCopyMode :=.F. oExcel:Quit() oAs:=Nil oExcel:=Nil oRange:=Nil oBook :=Nil // local XLS 2 File_Ex:='02_table' Xls_Copy:=Mar12+File_Ex oExcel :=tOleAuto():New("Excel.Application") oExcel :Workbooks:Open(Xls_Copy) oExcel :Visible := .F. oExcel :Set("DisplayAlerts",.F.) oExcel :CutCopyMode :=.F. oExcel :Visible := .F. oAs:= oExcel:ActiveSheet() oRange :=oExcel:ActiveCell:SpecialCells(xlLastCell) cRecno :=oRange:Row cColumn:=oRange:Column oAs:Range(oAs:Cells(2,2),oAs:Cells(cRecno,cColumn)):Select() oAs:Range(oAs:Cells(2,2),oAs:Cells(cRecno,cColumn)):Copy() oExcel :Visible := .F. oExcel_S:Visible := .F. /// /// oExcel:Quit() oAs:=Nil oExcel:=Nil oRange:=Nil oBook :=Nil
|
|
|
|
| Администратор
|
Пост N: 2120
Зарегистрирован: 23.05.05
|
|
Отправлено: 07.10.11 13:22. Заголовок: Так все-таки, что за..
Так все-таки, что за ошибка возникает ? И на каком точно операторе, SaveAs ?
|
|
|
|
| |
Пост N: 39
Зарегистрирован: 09.09.11
|
|
Отправлено: 07.10.11 13:39. Заголовок: Pasha, номер ошибки ..
Pasha, номер ошибки и строку кода, на которой вылетает сброшу в понедельник. Сейчас под руками нет того ПК. Спасибо
|
|
|
|
| |
Пост N: 40
Зарегистрирован: 09.09.11
|
|
Отправлено: 10.10.11 05:24. Заголовок: Добрый день всем. Pa..
Добрый день всем. Pasha, сообщение об ошибке ----------------------------- xHarbour Error Log ------------------------------ Date...............: 07/10/2011 Time...............: 21:21:55 Available memory...: 690844 Current disk.......: C Current directory..: TEMP.BL1 Free disk space....: 17157193728 Operating system...: Windows XP Professional 5.01.2600 Service Pack 3 xHarbour version...: xHarbour build 1.2.1 Intl. (SimpLex) (Rev. 6476) xHarbour built on..: Jun 11 2009 09:38:24 C/C++ compiler.....: Borland C++ 5.5.1 (32 bit) Multi Threading....: NO VM Optimization....: 2 -------------------- Internal Error Handling Information --------------------- Subsystem Call ....: Excel.Application:ACTIVESHEET System Code .......: 3 Default Status ....: .F. Description .......: DISP_E_MEMBERNOTFOUND Operation .........: SAVEAS Arguments .........: [ 1] = Type: C Val: C:\PROBA.ALL\FILES.EXP\20110907Day [ 2] = Type: N Val: 43 Involved File .....: Dos Error Code ....: 0 Trace Through: ---------------- TOLEAUTO:SAVEAS : 0 in Module: source\rtl\win32ole.prg EXCEL_DAY1 : 1,835 in Module: COMM_004.prg EXPORT_DATA : 474 in Module: MAIN_000.prg MAIN : 184 in Module: MAIN_000.prg
|
|
|
|
| Администратор
|
Пост N: 2121
Зарегистрирован: 23.05.05
|
|
Отправлено: 10.10.11 07:49. Заголовок: Oskar_AAA пишет: --..
Oskar_AAA пишет: цитата: | -------------------- Internal Error Handling Information --------------------- Subsystem Call ....: Excel.Application:ACTIVESHEET System Code .......: 3 Default Status ....: .F. Description .......: DISP_E_MEMBERNOTFOUND Operation .........: SAVEAS |
| Метод SaveAs надо применять не к листу, а к книге, т.е. к oBook. Лист ведь отдельно не сохраняется. Сохраняется вся книга.
|
|
|
|
| |
Пост N: 41
Зарегистрирован: 09.09.11
|
|
Отправлено: 10.10.11 10:49. Заголовок: Pasha, т.е надо запи..
Pasha, т.е надо записать oWorbook_S:SaveAs(Day_Excel,Excel97_10) вместо oAs_S:SaveAs(Day_Excel,Excel97_10) я правильно понял?
|
|
|
|
| Администратор
|
Пост N: 2122
Зарегистрирован: 23.05.05
|
|
Отправлено: 10.10.11 11:06. Заголовок: Oskar_AAA пишет: Pa..
Oskar_AAA пишет: цитата: | Pasha, т.е надо записать oWorbook_S:SaveAs(Day_Excel,Excel97_10) вместо oAs_S:SaveAs(Day_Excel,Excel97_10) я правильно понял? |
| В вашем коде же нет переменной oWorbook_S. И из воздуха она сама по себе не возникнет. Надо использовать ту переменную, в которую зенесено значение ActiveWorkbook, или какой-либо другой книги, которую надо сохранить.
|
|
|
|
| |
Пост N: 42
Зарегистрирован: 09.09.11
|
|
Отправлено: 10.10.11 11:18. Заголовок: попробую на другом П..
попробую на другом ПК, это вечером. А как сделать так чтобы: в процессе работы активировался Excel, пользователь внес необходимые данные, затем прошла запись данных в файл XLS и переход обратно в xHarbour. Другими словами: ввод данных в дилоговом режиме, активируется Excel, пользователь вносит данные в таблицу Excel, записывает Excel файл и управление обратно переходт в программу xHarbour. У меня gпользователи привыкли к вводу в Excel...
|
|
|
Новых ответов нет
, стр:
1
2
3
4
5
6
All
[см. все]
|
|