Текущее время: Вс, авг 03 2025, 21:01

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 7 ] 
Автор Сообщение
 Заголовок сообщения: Скрытые ячейки в Excel
СообщениеДобавлено: Ср, июл 04 2007, 12:51 
Ассистент
Ассистент
Аватара пользователя

Зарегистрирован:
Пт, май 19 2006, 07:24
Сообщения: 39
Откуда: Оренбург
Помогите,считать скрытые ячейки в Excel, ФМ ALSM_EXCEL_TO_INTERNAL_TABLE не помогает!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, июл 04 2007, 13:24 
Ассистент
Ассистент

Зарегистрирован:
Вс, ноя 12 2006, 23:53
Сообщения: 40
Откуда: Moscow
Совсем недавно стлокнулся в этой проблемой, вот как ее решил :
Скоприровал весь ALSM_EXCEL_TO_INTERNAL_TABLE и кое-что промодифицировал, попутно добавил возможность выбирать рабочий лист.
Цитата:
function zaqua_sd_read_excel .
*"----------------------------------------------------------------------
*"*"Локальный интерфейс:
*" IMPORTING
*" VALUE(FILENAME) LIKE RLGRAP-FILENAME
*" VALUE(I_BEGIN_COL) TYPE I
*" VALUE(I_BEGIN_ROW) TYPE I
*" VALUE(I_END_COL) TYPE I
*" VALUE(I_END_ROW) TYPE I
*" VALUE(I_SHEET_NUM) TYPE I
*" TABLES
*" INTERN STRUCTURE ALSMEX_TABLINE
*" EXCEPTIONS
*" INCONSISTENT_PARAMETERS
*" UPLOAD_OLE
*"----------------------------------------------------------------------

data: excel_tab type ty_t_sender.
data: ld_separator type c.
data: excel type ole2_object,
application type ole2_object,
workbooks type ole2_object,
workbook type ole2_object,
range type ole2_object,
columns type ole2_object,
selection type ole2_object,
entirecolumn type ole2_object,
worksheets type ole2_object,
worksheet type ole2_object.
data: h_cell type ole2_object,
h_cell1 type ole2_object.
data:
ld_rc type i.
* Rќckgabewert der Methode "clipboard_export "

* Makro fќr Fehlerbehandlung der Methods
define m_message.
case sy-subrc.
when 0.
when 1.
message id sy-msgid type sy-msgty number sy-msgno
with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
when others. raise upload_ole.
endcase.
end-of-definition.


* check parameters
if i_begin_row > i_end_row. raise inconsistent_parameters. endif.
if i_begin_col > i_end_col. raise inconsistent_parameters. endif.

* Get TAB-sign for separation of fields
class cl_abap_char_utilities definition load.
ld_separator = cl_abap_char_utilities=>horizontal_tab.

* open file in Excel
if application-header = space or application-handle = -1.
create object application 'Excel.Application'.
m_message.
get property of application 'Parent' = excel.
m_message.
endif.
call method of application 'Workbooks' = workbooks.
m_message.
call method of workbooks 'Open' exporting #1 = filename
#2 = 0
#3 = 1.
m_message.

* set property of application 'Visible' = 1.
* m_message.
****************************************
* GET PROPERTY OF application 'ACTIVESHEET' = worksheet.
data sheet_count type i.
get property of application 'Worksheets' = worksheets.
m_message.
get property of worksheets 'Count' = sheet_count.
m_message.
if i_sheet_num > sheet_count or i_sheet_num < 0.
i_sheet_num = 1.
endif.
call method of worksheets 'Item' = worksheet exporting #1 = i_sheet_num.
m_message.
call method of worksheet 'Activate'. "<<<<<<<<<<<<< без этого не будет возможности выбирать рабочий лист
m_message.
****************************************
*Unhide all hidden columns and rows
get property of application 'Columns' = columns.
m_message.
call method of columns 'Select'.
m_message.
get property of application 'Selection' = selection.
m_message.
get property of selection 'EntireColumn' = entirecolumn.
m_message.
set property of entirecolumn 'Hidden' = 0 .
m_message.
****************************************
* mark whole spread sheet
call method of worksheet 'Cells' = h_cell
exporting #1 = i_begin_row #2 = i_begin_col.
m_message.
call method of worksheet 'Cells' = h_cell1
exporting #1 = i_end_row #2 = i_end_col.
m_message.

call method of worksheet 'RANGE' = range
exporting #1 = h_cell #2 = h_cell1.
m_message.
call method of range 'SELECT'.
m_message.

* copy marked area (whole spread sheet) into Clippboard
call method of range 'COPY'.
m_message.

* read clipboard into ABAP
call method cl_gui_frontend_services=>clipboard_import
importing
data = excel_tab
exceptions
cntl_error = 1
* ERROR_NO_GUI = 2
* NOT_SUPPORTED_BY_GUI = 3
others = 4
.
if sy-subrc <> 0.
message a037(alsmex).
endif.

perform separated_to_intern_convert tables excel_tab intern
using ld_separator.

* clear clipboard
refresh excel_tab.
call method cl_gui_frontend_services=>clipboard_export
importing
data = excel_tab
changing
rc = ld_rc
exceptions
cntl_error = 1
* ERROR_NO_GUI = 2
* NOT_SUPPORTED_BY_GUI = 3
others = 4
.

* quit Excel and free ABAP Object - unfortunately, this does not kill
* the Excel process
get property of application 'ActiveWorkbook' = workbook.
m_message.
set property of workbook 'Saved' = 1.
m_message.
* CALL METHOD OF workbook 'Close'.
* m_message.
call method of application 'QUIT'.
m_message.

* >>>>> Begin of change note 575877
* to kill the Excel process it's necessary to free all used objects
free object h_cell. m_message.
free object h_cell1. m_message.
free object range. m_message.
free object worksheet. m_message.
free object workbooks. m_message.
free object workbook. m_message.
free object selection. m_message.
free object worksheets. m_message.
free object entirecolumn. m_message.
free object application. m_message.
free object excel. m_message.
* <<<<< End of change note 575877
endfunction.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, июл 05 2007, 05:52 
Ассистент
Ассистент
Аватара пользователя

Зарегистрирован:
Пт, май 19 2006, 07:24
Сообщения: 39
Откуда: Оренбург
Не работает, не считывает скрытые ячейки :(


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, июл 05 2007, 09:12 
Ассистент
Ассистент

Зарегистрирован:
Вс, ноя 12 2006, 23:53
Сообщения: 40
Откуда: Moscow
elv написал(а):
Не работает, не считывает скрытые ячейки :(

Забыл сказать,что программа считывает только скрытые столбцы.
Цитата:
....
*Unhide all hidden columns and rows
get property of application 'Columns' = columns.
m_message.
call method of columns 'Select'.
m_message.
get property of application 'Selection' = selection.
m_message.
get property of selection 'EntireColumn' = entirecolumn.
m_message.
set property of entirecolumn 'Hidden' = 0 .
m_message.
....

Надо здесь кое-что добавить ;)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, июл 05 2007, 09:13 
Председатель
Председатель
Аватара пользователя

Зарегистрирован:
Чт, апр 13 2006, 12:32
Сообщения: 1503
Откуда: Питер
Попробуйте что-то типа такого:

Code:
CREATE OBJECT w_excel 'Excel.Application'.
...
WHILE l_cols GT 0.
  CALL METHOD OF w_excel 'Columns' = w_cell
  EXPORTING
  #1 = l_cols.

  CALL METHOD OF w_cell 'EntireColumn' = entirecolumn.

  l_cols = l_cols - 1.
  SET PROPERTY OF entirecolumn 'Hidden' = 0 .

  FREE OBJECT entirecolumn.
  FREE OBJECT w_cell.

ENDWHILE.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, июл 05 2007, 09:48 
Ассистент
Ассистент

Зарегистрирован:
Вс, ноя 12 2006, 23:53
Сообщения: 40
Откуда: Moscow
Вот, что я добавил:
Цитата:
...
GET PROPERTY OF selection 'EntireRow' = entirerow.
m_message.
SET PROPERTY OF entirerow 'Hidden' = 0 .
m_message.
...

Вроде работает.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, июл 05 2007, 10:58 
Ассистент
Ассистент
Аватара пользователя

Зарегистрирован:
Пт, май 19 2006, 07:24
Сообщения: 39
Откуда: Оренбург
Спасибо всем, получилось, сделала как Long посоветовал :)


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

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


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

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


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

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