Активная гиперссылка с SAS ODS EXCEL

У меня возникла проблема с гиперссылкой, созданной SAS ODS EXCEl. Я использую SAS9.4TM3 и EXCEL 2013.

я закодировал это

data lst_tie;
NUM_TIE = '2900004227803';
output;
NUM_TIE = '2900004233852';
output;
run;
data lst_tie(drop=HL);
set lst_tie;
format HL2 $500.;
HL = "http://tier-kh.cm-cic.fr/tie6_tiers/default.aspx?trt=tiesyn&banque=02297&caisse=38848&tiers="||NUM_TIE;
HL2 = '=LIEN_HYPERTEXTE("'||HL||'";"'||NUM_TIE||'")';
run;

ods excel file = "$GRPFPU/test_tiesyn.xlsx"
    options (absolute_column_width="3cm,20cm,20cm");
proc report data=lst_tie
;
column  NUM_TIE   
        HL2;
define num_tie / "Numero" style(column)={ width=100%};
define HL2  / "Tiers" style(column)={tagattr='wraptext:no' width=100%};
quit; 
ods excel close;

URL выглядит хорошо закодированным:

=LIEN_HYPERTEXTE("http://tier-kh.cm-cic.fr/tie6_tiers/default.aspx?trt=tiesyn&banque=02297&caisse=38848&tiers=2900004227803";"2900004227803")

без возврата каретки (CR).

Но при открытии файла XLSX сразу после LIEN_HYPERTEXTE появляются символы CR (ГИПЕРССЫЛКА на английском языке).

XLSX Preview 1

Но если я удалю CR, гиперссылка будет в порядке.

XLSX OK

Я пробовал несколько вариантов, таких как WIDTH_COLUMS, Wrap Option, но никак.

Спасибо


person chezleon    schedule 15.01.2020    source источник
comment
Попробуйте использовать одинарные кавычки вокруг значения HL.   -  person Chris J    schedule 15.01.2020
comment
Поскольку вы используете более старую версию SAS, вам нужно будет использовать обходной путь, упомянутый в этой теме, вместо более простого решения. добавлено в SAS 9.4M4. сообщества. sas.com/t5/ODS-and-Base-Reporting/   -  person Tom    schedule 15.01.2020


Ответы (2)


ODS EXCEL пытается сделать вашу распечатку красивой, вставляя физические разрывы строк в длинные строки. Очевидно, он не замечает, что ваше значение представляет собой формулу, а не обычный текст.

Начиная с SAS 9.4M4, вы можете добавить flow="tables" в оператор ODS. См. этот SAS Запись в блоге

ods excel file = "$GRPFPU/test_tiesyn.xlsx"
    options (absolute_column_width="3cm,20cm,20cm"
             flow="tables"
            )
;

Для более старых версий SAS, таких как ваша, попробуйте сделать столбец шире, чтобы он не пытался его обернуть. Попробуйте добавить width=1000% вместо width=100% в столбец со ссылками.

define HL2  / "Tiers" style(column)={tagattr='wraptext:no' width=1000%};
person Tom    schedule 15.01.2020
comment
Спасибо, Том. Лучше с flow=tables . Но ссылка не активна - person chezleon; 16.01.2020
comment
Делает ли ячейку просто установкой значения, похожего на формулу, на самом деле формулой? Возможно, вам придется внести другие изменения в то, как вы пытаетесь это сделать. - person Tom; 16.01.2020

Чтобы иметь кликабельную гиперссылку, я добавляю формат ``

data lst_tie;
    NUM_TIE = '2900004227803';
    output;
    NUM_TIE = '2900004233852';
    output;
run;

data lst_tie;
    set lst_tie;
    format HL2 $500.;
    HL = "http://tier-kh.cm-cic.fr/tie6_tiers/default.aspx?trt=tiesyn&banque=02297&caisse=38848&tiers="||NUM_TIE;
run;

data one;
    set lst_tie;
    retain fmtname '$urltie';
    rename NUM_TIE=start;
    label =  HL;
run;

proc format cntlin=one;
run;

ods excel file = "$GRPFPU/test_tiesyn.xlsx"
    options (absolute_column_width="3cm,20cm,20cm" flow="tables");

proc report data=lst_tie
;
    column  NUM_TIE   
    ;
    define num_tie / "Numero" style(column)={TAGATTR='format:0' width=1.5in url=$urltie. color=cx0000FF textdecoration=underline /*tagattr='wraptext:no' width=100%*/
    };
quit;

ods excel close;

``

person chezleon    schedule 16.01.2020