Текущее время: Чт, июл 24 2025, 01:59

Часовой пояс: 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 часа


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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