On-line: Dr. Oldwarez, гостей 1. Всего: 2 [подробнее..]
АвторСообщение
Dima
администратор




Пост N: 2372
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 21.05.12 16:52. Заголовок: Снова EXCEL (продолжение)


Ранее с Excel из Harbour ни когда не работал.
Поставили тут задачу.
У некоторых поставщиков есть определенные формы заказов.
Набраны они в Excel. Сейчас народ руками заполняет эти формы
и шлет по электронке поставщикам.
Задача сводится к тому что бы в этих формах находить
нужные коды товара и в нужной ячейке проставлять заказ.
Может ткнет кто носом с чего начать что бы не напороться на грабли.
Спасибо
Сами формы тут http://zalil.ru/33279066

Спасибо: 0 
Профиль
Ответов - 300 , стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 All [только новые]


Oskar_AAA



Пост N: 124
Зарегистрирован: 09.09.11
ссылка на сообщение  Отправлено: 13.06.20 15:41. Заголовок: Добрый день, коллеги..


Добрый день, коллеги.
Dima, если есть права админа, то работает корректно. Пробовали 2 раза и оба раза все ОК.
Haz - Если просто конвертить dbf в xlsx, забудьте про OLE. Посмотрите на xlsxml. В разы быстрее и не зависит от капризов екселя. - где можно скачать итд?

Спасибо: 0 
Профиль
Oskar_AAA



Пост N: 125
Зарегистрирован: 09.09.11
ссылка на сообщение  Отправлено: 13.06.20 16:22. Заголовок: Немного о проекте. П..


Немного о проекте. Продукт для банка (аналитика), 1996 год начало (Clipper5.1). Сейчас более 60 DBF (для примера. проводки 10 млн. 4ГБ, остатки по счетам 6 млн. 600 МБ, курсы валют, филиалы, клиенты итд). За операционный день импорт данных (в среднем) данные: 272 тыс.счетов, 8 тыс. остатков по балансу филиалов, 120 тыс.проводок, 236 тыс. клиентов итд....
Использую тандем с 2011 года:
1. обработка данных и выгрузка во временный DBF(ы)
2. Excel - конвертация в Xlsx, форматирование, цвета, шрифты итд, загрузка макета(ов) и запись временного Xlsx
3. Excel - загрузка макета(ов) отчета и копирование из временного Xlsx.

PS: Версия программы 2005 года (xharbour), 106 млн проводок, 95 млн. остатки по счетам, 15ГБ....

на LETODB переводил в 2006 году, но остановился (ушел с банковской тематики, сейчас вернулся...)

Спасибо: 0 
Профиль
Oskar_AAA



Пост N: 126
Зарегистрирован: 09.09.11
ссылка на сообщение  Отправлено: 13.06.20 16:27. Заголовок: Haz - Всё настроишь,..


Haz - Всё настроишь, все работает и вдруг через год или два валится на pagesetup или printquality это из последних. Часто на формат данных вдруг ругаться начинает. На копи пасте из одного листа в другую книгу, где то на сотом цикле может рухнуть.. Да и в целом очень зависимый механизм от версии офиса. При этом если произошла ошибка эусель как правило зависает в пямяти процессом и срубается только диспетчером тк так его не видно

Один в один, аналогичная ситуация...

Спасибо: 0 
Профиль
SergKis
постоянный участник




Пост N: 3262
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 13.06.20 16:37. Заголовок: Oskar_AAA http://cl..

Спасибо: 0 
Профиль
SergKis
постоянный участник




Пост N: 3263
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 13.06.20 16:43. Заголовок: PS hb -> \co..


PS
hb -> \core-master\extras\hbxlsxml/*.*

Спасибо: 0 
Профиль
Haz
администратор




Пост N: 1557
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 13.06.20 17:03. Заголовок: Oskar_AAA пишет: гд..


Oskar_AAA пишет:

 цитата:
где можно скачать итд?


Сергей уже указал правильное направление
напишу примерчик конвертации DBF2XML ( XML этот такой же родной для EXCEL как и XLSX )
в примере конвертил CUSTOMER.DBF из поставки минигуи , но привязки к структуре нет , можно пихнуть любой другой ( на мемополя проверку тоже не делал )
 

#require "hbxlsxml"

REQUEST DBFCDX, DBFFPT



PROCEDURE Main()

LOCAL oXml, oSheet, cFile := "customer.xml"
LOCAL n,oStyle
LOCAL aStr := {}
LOCAL cType := ""

RDDSETDEFAULT('DBFCDX')
Set CENTURY ON
Set Deleted ON
Set Date GERMAN


SET Date FORMAT 'DD.MM.YYYY'
REQUEST HB_CODEPAGE_RU1251, HB_CODEPAGE_RU866, HB_CODEPAGE_UTF8

EXTERN hb_StrToUTF8

Set( _SET_DATEFORMAT, "dd.mm.yyyy" )

USE ("CUSTOMER.DBF") SHARED NEW ALIAS "CUSTOMER"
aStr := CUSTOMER->(DBSTRUCT())

// Создаем объект XML
oXml := ExcelWriterXML():New( cFile )
oXml:setOverwriteFile( .T. )
oXml:setCodePage( "RU1251" )

// Определяем Лист
oSheet := oXml:addSheet( "Sheet1" )



// Определяем стиль названия отчета
oStyle := oXml:addStyle( "Title" )
oStyle:alignHorizontal( "Left" )
oStyle:alignVertical( "Center" )
oStyle:SetfontName( 'Arial' )
oStyle:SetfontSize( 12 )
oStyle:setFontBold()

//Определяем стили шапки колонок

oStyle := oXml:addStyle( "HDR" )
oStyle:Border( "All", 2, "Automatic", "Continuous" )
oStyle:alignHorizontal( "Center" )
oStyle:alignVertical( "Center" )
oStyle:alignWraptext()
oStyle:setFontBold()
oStyle:alignWraptext()

// Определяем стили колонок

cAlign := "Left"
for n := 1 TO Len( aStr )
cType := aStr[n][2]
switch cType
Case "D"
cAlign := "Center"
Exit
Case "C"
cAlign := "Left"
Exit
Case "N"
cAlign := "Right"
Exit
end Switch
oSheet:columnWidth( n, aStr[n][3] * 8 )


oStyle := oXml:addStyle( "F" + NToC(n) )
oStyle:Border( "All", 1, "Automatic", "Continuous" )
oStyle:alignHorizontal( cAlign )
oStyle:alignVertical( "Center" )
oStyle:fontSize( 10 )

next



// Пишем название отчета
nRow := 1
oSheet:writeString( nRow, 1, "Пример выгрузки DBF2XML " , "Title" )


// Пишем шапку
nRow++
nRow++
For n := 1 To Len( aStr )
oSheet:writeString( nRow, n, aStr[n][1] , "HDR" )
End
oSheet:cellHeight( nRow, 1, 22 )

nRow++

//Данные

While !CUSTOMER->(eof())
oSheet:cellHeight( nRow, 1, 15 )
For n := 1 To CUSTOMER->(FCOUNT())
uData := CUSTOMER->(FieldGet(n))
cType := ValType( uData )

switch cType
Case "N"
oSheet:writeNumber( nRow, n, uData, "F" + NToC(n) )
Exit
Case "C"
oSheet:writeString( nRow, n, uData, "F" + NToC(n) )
Exit
Case "U"
oSheet:writeString( nRow, n, '', "F" + NToC( n) )
Exit
Case "T"
oSheet:writeDateTime( nRow, n, hb_Ttoc(uData), "F" + NToC( n) )
Exit
Case "D"
oSheet:writeDateTime( nRow, n, Dtoc(uData), "F" + NToC( n) )
Exit
Case "L"
oSheet:writeString( nRow, n, IIF(uData, 'да' , 'нет'), "F" + NToC( n) )
Exit
End Switch

Next

CUSTOMER->(dbSkip(1))
nRow++
End

oXml:writeData( cFile )


RETURN

.

Спасибо: 0 
Профиль
Haz
администратор




Пост N: 1558
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 13.06.20 17:07. Заголовок: Oskar_AAA пишет: гд..


Oskar_AAA пишет:

 цитата:
где можно скачать итд?


только компилировать с библиотекой из поставки минигуи, она к русскому языку приучена.

Спасибо: 0 
Профиль
Pasha
Администратор




Пост N: 3957
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 13.06.20 19:14. Заголовок: xlsxml конечно работ..


xlsxml конечно работает в разы быстрее, чем ole, но подходит для ограниченного круга задач.
Скажем сейчас мне надо выбрать данные из почти 300 таблиц xls, похожей, но различной структуры.
Делаю средствами ole. Долговато, но время здесь некритично, это разовая выборка данных для дальнейшей конвертации.
Или типовая задача: скачать бланк документа с сайта, пометить в нем ячейки и заполнить его данными.
xlsxml тут никак не подходит.

Спасибо: 0 
Профиль
Haz
администратор




Пост N: 1559
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 13.06.20 19:24. Заголовок: Pasha пишет: xlsxml..


Pasha пишет:

 цитата:
xlsxml тут никак не подходит.


Не подходит для этой цели. Xlsxml это вывод. Для чтения или OLE или ado/odbc если читаем простую таблицу. Если нужно прочесть сложный отчёт в Excel, то пока только OLE.
Соглашусь, что не хватает альтернативы тормознутому OLE. Есть коммерческие библиотеки, но не все готовы за них платить ради разовой задачи

Спасибо: 0 
Профиль
SergKis
постоянный участник




Пост N: 3264
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 13.06.20 19:32. Заголовок: Pasha пишет Делаю ср..


Pasha пишет
 цитата:
Делаю средствами ole. Долговато, но время здесь некритично, это разовая выборка данных для дальнейшей конвертации. Или типовая задача: скачать бланк документа с сайта, пометить в нем ячейки и заполнить его данными.


Можно не использовать ole, о получать xml и разбирать его. Для похожих таблиц - тоже однотипная операция. Данные бланков то же могут быть и в xml и json, этого становится больше (xls[x] уже почти не встречается), а xlsxml со своей задачей справляется

Спасибо: 0 
Профиль
Haz
администратор




Пост N: 1560
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 13.06.20 19:47. Заголовок: SergKis пишет: Можн..


SergKis пишет:

 цитата:
Можно не использовать ole, о получать xml и разбирать его.


тоже думал над этим вопросом, но получить xml из excel можно не совсех версий Excel. До xlsx БЫЛ двоичный BIFF, потом XML. OLE наплевать на версию и работает везде, но работает медленно и капризно.
Json бесспорно удобнее xml, получить хеш массив и делать то ничего не надо, все уже разложено по ключам. Жаль не все его дают, а как пишет Паша - скачай бланк и заполни.

Спасибо: 0 
Профиль
SergKis
постоянный участник




Пост N: 3265
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 13.06.20 20:04. Заголовок: Haz пишет получить x..


Haz пишет
 цитата:
получить xml из excel можно не совсех версий Excel. До xlsx БЫЛ двоичный BIFF, потом XML. OLE наплевать на версию и работает везде, но работает медленно и капризно.


Уже не помню таких версий. И если бы ole не имела глюков, особенно на компах клиентов, где чужие админы, то не возникали бы вопросы, которые выше. С xml все надежнее и в сети все больше данные только в xml или json (и можно выбрать вариант). С json проще, его и выбираешь и бланков xls[x] по обмену данными уже нет, если только сам разрабатываешь и применяешь в технологии обмена.

Спасибо: 0 
Профиль
Haz
администратор




Пост N: 1561
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 13.06.20 20:26. Заголовок: SergKis пишет: Уже ..


SergKis пишет:

 цитата:
Уже не помню таких версий


А они есть В остальном согласен. json лидирует, за ним xml и в конце этого паравоза устаревший обмен ввиде "скачай и заполни".
Изначально тема была как быстро выгрузить в Excel, ответ- xlsxml. Как по мелочам допилить красоту, ответ - ole ( тк вывод в xlsxml, линеен, а красоту надо наводить рандомно) . И в каком формате организовать обмен, ответ json/xml.

Спасибо: 0 
Профиль
Oskar_AAA



Пост N: 127
Зарегистрирован: 09.09.11
ссылка на сообщение  Отправлено: 13.06.20 20:45. Заголовок: Добрый вечер, коллег..


Добрый вечер, коллеги. Спасибо за ответы. Всем успехов и удачи... Будем изучать и тестировать.

Спасибо: 0 
Профиль
Pasha
Администратор




Пост N: 3958
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 15.06.20 09:30. Заголовок: Насчет админ прав - ..


Насчет админ прав - это мысль, проверю на проблемных компьютерах, где проказник-эксель отказывается работать
Как раз подвернулся случай проверить - не помогло

Спасибо: 0 
Профиль
Oskar_AAA



Пост N: 128
Зарегистрирован: 09.09.11
ссылка на сообщение  Отправлено: 16.06.20 08:36. Заголовок: у меня все ка и было..


у меня все ка и было. Нотник -ОК. Рабочая станция - свалился на 145 файле в копирасте

Спасибо: 0 
Профиль
Pasha
Администратор




Пост N: 3959
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 16.06.20 09:19. Заголовок: В последнее время я ..


В последнее время я больше ориентируюсь на работу с LibreOffice. Механизм ole для него более тормозной, чем для Excel, структура объектов сложнее, но нет таких капризов и сюрпризов, как с Excel
Или делаю работу с бланком xsl[x] как для одного, так и для второго пакета, и использую либо Excel-вариант, либо oo.

Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 6725
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 16.06.20 17:55. Заголовок: Pasha пишет: В посл..


Pasha пишет:

 цитата:
В последнее время я больше ориентируюсь на работу с LibreOffice.


Чем он отличается от OpenOffice ?
Сам не ставил его, а вот экспорт из МиниГуи, как в примере MiniGUI\SAMPLES\Advanced\Tsb_Export\demo.prg
что-то не пошёл у меня у заказчика.

Спасибо: 0 
Профиль
Pasha
Администратор




Пост N: 3960
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 16.06.20 18:44. Заголовок: Andrey пишет: Чем о..


Andrey пишет:

 цитата:
Чем он отличается от OpenOffice ?



С точки зрения программирования - ничем. А нравится, не нравится - не тот вопрос. Да и использовать его заказчику необязательно.
Положим на проблемных компах не получается работа с Excel. Формирую xls-документ через LibreOffice, а пользователь открывает его уже экселем
Про OO ему и знать не надо

Спасибо: 0 
Профиль
Oskar_AAA



Пост N: 129
Зарегистрирован: 09.09.11
ссылка на сообщение  Отправлено: 19.06.20 19:51. Заголовок: Добрый вечер, коллег..


Добрый вечер, коллеги. Поставили 2-ой ПК. Win10x64+Office2019 с правами администратора. Ошибок нет, весь отчет выгрузился без проблем.
Коллеги, есть ли пример кода запуска LibreOffice под xHarbour?
Всем Спасибо за участие и консультации! Успехов и удачи....

Спасибо: 0 
Профиль
Ответов - 300 , стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 All [только новые]
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 118
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет