Текущее время: Ср, июл 23 2025, 21:50

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 9 ] 
Автор Сообщение
 Заголовок сообщения: И снова она: выгрузка в EXCEL
СообщениеДобавлено: Вт, мар 20 2012, 18:18 
Ассистент
Ассистент
Аватара пользователя

Зарегистрирован:
Чт, янв 19 2012, 15:46
Сообщения: 35
Коллеги, столкнулся с проблемкой

Есть прога, кот. выгружает данные в эксель, но выгружает не через всем известный ФМ, а все пишется через классы

Так вот, там есть такой момент
Code:
column_dimension = lo_worksheet->get_column_dimension( 'R' ).
column_dimension->set_width( 17 ).


т.е. задается ширина столбца

но может быть такое, что кол-во данных может превышать данную ширину
как пример

строки

12345
ADCDF

имеют разную длину (хотя 5 символов и там и там)

пробовал сделать так:

Code:
DATA: lo_excel         TYPE REF TO zcl_excel,
          lo_excel_writer  TYPE REF TO zif_excel_writer,
          lo_worksheet     TYPE REF TO zcl_excel_worksheet,
          column_dimension TYPE REF TO zcl_excel_worksheet_columndime.

column_dimension = lo_worksheet->get_column_dimension( 'R' ).
    column_dimension->set_auto_size('X').


но в итоге выводится ужасающая ширина (даж не знаю сколько сиволов)

А всего-то хочу сделать автоширину по определенным столбцам

Может кто знает как сделать?

PS Я бы макросом сделал, вот только не знаю как его подключить и где прописать, т.к. изначально то файл экселевский не существует


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: И снова она: выгрузка в EXCEL
СообщениеДобавлено: Вт, мар 20 2012, 18:26 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Пт, янв 18 2008, 10:34
Сообщения: 716
Откуда: Moscow
Пол: Мужской
сомневаюсь что вы получите тут ответ, учитывая то что все используемые объекты - объекты Z - классов :?

_________________
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. (Э. Йодан)


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: И снова она: выгрузка в EXCEL
СообщениеДобавлено: Ср, мар 21 2012, 10:10 
Ассистент
Ассистент
Аватара пользователя

Зарегистрирован:
Чт, янв 19 2012, 15:46
Сообщения: 35
Да, соглашусь :(

Тогда подскажите пож. как через ole объект открыть файл, запустить в нем VB код и закрыть файл
И все это в фоновом режиме и через ABAP :)

И возможно ли это?

(проще говоря сделать автоширину столбцов, но чтобы юзер не догадался о том что там что то происходит
на данном этапе экселевский файл сохраняется без открытия программы EXCEL)


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: И снова она: выгрузка в EXCEL
СообщениеДобавлено: Ср, мар 21 2012, 11:18 
Ассистент
Ассистент
Аватара пользователя

Зарегистрирован:
Пн, июл 23 2007, 08:49
Сообщения: 31
Откуда: Москва
Пол: Мужской
Можно сделать автоподгонку и без вызова VB-макроса, только через OLE.
Code:
CALL METHOD OF ref_sheet 'Columns' = ref_columns.
CALL METHOD OF ref_columns 'Autofit'.

Но, если все же нужно вызвать макрос:
Code:
CALL METHOD OF ref_excel 'Run'
           EXPORTING #1 = l_macro_name.

Чтобы книга открылась в "фоновом" режиме:
Code:
CREATE OBJECT ref_excel 'Excel.Application'.
SET PROPERTY OF ref_excel 'Visible' = 0.
CALL METHOD OF ref_excel 'Workbooks' = ref_wbooks.
CALL METHOD OF  ref_wbooks  'Open'
  EXPORTING #1         = l_filename.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: И снова она: выгрузка в EXCEL
СообщениеДобавлено: Ср, мар 21 2012, 13:24 
Ассистент
Ассистент
Аватара пользователя

Зарегистрирован:
Чт, янв 19 2012, 15:46
Сообщения: 35
Да, спасибо)

Сделал так:

Code:
DATA: l_filename   TYPE string.
    DATA: lo_ex        TYPE ole2_object.
    DATA: lo_wbs       TYPE ole2_object.
    DATA: lo_wb        TYPE ole2_object.
    DATA: sheet        TYPE ole2_object.
    DATA: columns      TYPE ole2_object.

    l_filename = cv_path.

    CREATE OBJECT lo_ex 'Excel.Application'.
    SET PROPERTY OF lo_ex 'Visible' = 0.

    CALL METHOD OF lo_ex 'Workbooks' = lo_wbs.

    CALL METHOD OF lo_wbs 'Open' = lo_wb
      EXPORTING #1 = l_filename.

    CALL METHOD OF lo_ex 'Worksheets' = sheet
    EXPORTING #1 = 1.
    CALL METHOD OF sheet 'Activate'.

    CALL METHOD OF sheet 'Columns' = columns.
    CALL METHOD OF columns 'Autofit'.

    CALL METHOD OF lo_ex 'Save'.

    CALL METHOD OF lo_wbs 'CLOSE'.
    CALL METHOD OF lo_ex 'QUIT'.


Но тут еще момент неприятный, он меня стал спрашивать: "Файл 'RESUM.XLW' уже существует в данном месте. Заменить?"

Что это? как избавиться?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: И снова она: выгрузка в EXCEL
СообщениеДобавлено: Ср, мар 21 2012, 13:49 
Ассистент
Ассистент
Аватара пользователя

Зарегистрирован:
Чт, янв 19 2012, 15:46
Сообщения: 35
обошел:)

надо было добавить:
Code:
SET PROPERTY OF lo_ex 'DisplayAlerts' = 0.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: И снова она: выгрузка в EXCEL
СообщениеДобавлено: Ср, мар 21 2012, 13:55 
Младший специалист
Младший специалист

Зарегистрирован:
Вт, авг 05 2008, 19:46
Сообщения: 96
Откуда: С Урала
опоздал с советом но потом то надо
Code:
SET PROPERTY OF lo_ex 'DisplayAlerts' = 1.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: И снова она: выгрузка в EXCEL
СообщениеДобавлено: Ср, мар 21 2012, 14:00 
Младший специалист
Младший специалист

Зарегистрирован:
Вт, авг 05 2008, 19:46
Сообщения: 96
Откуда: С Урала
Хотя это подавление сообщений только на время работы данного макроса, так что наверное, обратно не обязательно, если ничего больше хочется узнать от EXCEL


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: И снова она: выгрузка в EXCEL
СообщениеДобавлено: Ср, мар 21 2012, 17:47 
Ассистент
Ассистент
Аватара пользователя

Зарегистрирован:
Чт, янв 19 2012, 15:46
Сообщения: 35
Буду иметь ввиду :)

Но вообще, да, от Excel больше ничего не надо

Всем спасибо за помощь!


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 9 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: Ahrefs [Bot]


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB