Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Blackmore64 Профи
Вступление в Клуб: 17.01.2017
|
Вт Апр 23, 2019 08:38  Гиперссылка при выводе EXCEL-отчета через OOXML |
|
Полезность: Нет оценки
|
Добрый день.
Создана операция по выводу групп доступа с доступными объектами:
- на первом листе - список групп
- на каждом последующем листе - доступные объекты одной из существующих групп доступа.
На первом листе есть колонка со ссылкой на лист с соответствующей группой.
Конструкция
Код: | &xl.hyperlink(cur_row, 3, '"#"&B' || cur_row || '&"!A1";">>>"', null, 1); | выводит подчеркнутые возрастающие числа (5, 137, 186 и т.д.), т.е. ссылка не получается. Плюс при формировании отчета выходит ощибка "В книге обнаружено содержимое, которое не удалось прочитать. попробовать восстановить содержимое?". Затем
"Была выполнена проверка на уровне файла с последующим восстановлением файла. Некоторые фрагменты документа могли быть восстановлены либо удалены.
Восстановленный компонент: Компонент /xl/worksheets/sheet1.xml.
Удаленное свойство: Гиперссылки из части /xl/worksheets/sheet1.xml".
Если переделать так Код: | &xl.cell(cur_row, 3, ('=ГИПЕРССЫЛКА("#"&B' || cur_row || '&"!A1";">>>")'|| NL$)); | то ссылка, например, на 2-й лист выводится так
=ГИПЕРССЫЛКА("#"&B2&"!A1";">>>")
И ссылка начинает работать только если в зайти ячейку по F2 и нажать Enter.
Примеров использования &xl.hyperlink в дистрибутиве не нашел.
Что не так делаем? |
|
![](templates/subSilver/images/spacer.gif) |
Volod Эксперт
Вступление в Клуб: 19.09.2007
|
Вт Апр 23, 2019 11:34   |
|
Полезность: Нет оценки
|
я бы попробовал сравнить sheet1 с корректным линком и sheet1 с некорректным линком |
|
![](templates/subSilver/images/spacer.gif) |
Blackmore64 Профи
Вступление в Клуб: 17.01.2017
|
Вт Апр 23, 2019 13:48   |
|
Полезность: Нет оценки
|
Пример сформированного файла с конструкцией
=ГИПЕРССЫЛКА("#"&B2&"!A1";">>>")
Ячейки C2 и C3 стали корректными после ручного F2 и нажатия Enter. Ячейку С4 не трогали.
Мне, правда, интересней чтоб заработало с &xl.hyperlink... |
|
![](templates/subSilver/images/spacer.gif) |
Blackmore64 Профи
Вступление в Клуб: 17.01.2017
|
Вт Апр 23, 2019 13:59   |
|
Полезность: Нет оценки
|
Или может есть способ, чтобы прямо в операции можно было запрограммировать нажатие F2 и Enter |
|
![](templates/subSilver/images/spacer.gif) |
Gobur Профи
Вступление в Клуб: 06.11.2012
|
Вт Апр 23, 2019 16:18   |
|
Полезность: Нет оценки
|
Blackmore64 пишет: | Или может есть способ, чтобы прямо в операции можно было запрограммировать нажатие F2 и Enter |
Не знаю как сейчас, но раньше в эксель программно в ячейку надо было писать английское название функции, т.е. не ГИПЕРССЫЛКА.
Иначе тоже начинало работать только после F2 и enter. |
|
![](templates/subSilver/images/spacer.gif) |
Blackmore64 Профи
Вступление в Клуб: 17.01.2017
|
Ср Апр 24, 2019 07:34   |
|
Полезность: Нет оценки
|
Gobur пишет: | раньше в эксель программно в ячейку надо было писать английское название функции, т.е. не ГИПЕРССЫЛКА.
Иначе тоже начинало работать только после F2 и enter. |
Попробовал =HYPERLINK("#"&B2&"!A1";">>>") - почему-то вообще не работает. После нажатия F2 и Enter ошибка #ИМЯ? |
|
![](templates/subSilver/images/spacer.gif) |
kai Профи
Вступление в Клуб: 16.08.2012
|
Пт Апр 26, 2019 13:19  [OOXML]::[API_XL].hyperlink |
|
Полезность: 1
|
Сейчас в [OOXML]::[API_XL].hyperlink реализовано создание ссылок для переходов по url наружу, а внутри файла нет. Чтобы было, нужно дорабатывать... по заявке.
Если везде понажимать F2 и Enter, то изменения такие
1. В файле xl\calcChain.xml добавились строки
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<calcChain xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main">
Код: | <c i="4" l="1" r="D1"/>
<c i="3" r="D1"/>
<c i="1" r="C4"/>
<c r="C3" i="1"/> |
<c r="D1" i="2"/>
<c r="C2" i="1"/>
</calcChain>
2. В xl\sharedStrings.xml исчезло
=ГИПЕРССЫЛКА("#Оглавление!A1";"Назад в оглавление")
=ГИПЕРССЫЛКА("#"&B4&"!A1";">>>")
В xl\worksheets\sheet1.xml вместо
Код: | <c r="C4" t="s">
<v>
12
</v>
</c> |
стало
Код: | <c s="2" r="C4" t="str">
<f>
HYPERLINK("#"&B4&"!A1",">>>")
</f>
<v>
>>>
</v>
</c> |
3. В xl\worksheets\sheet3.xml и в xl\worksheets\sheet4.xml вместо
Код: | <c r="D1" t="s">
<v>
3
</v>
</c> |
стало
Код: | <c s="2" r="D1" t="str">
<f>
HYPERLINK("#Оглавление!A1","Назад в оглавление")
</f>
<v>
Назад в оглавление
</v>
</c> |
|
|
![](templates/subSilver/images/spacer.gif) |
Blackmore64 Профи
Вступление в Клуб: 17.01.2017
|
Пн Апр 29, 2019 07:14  Re: [OOXML]::[API_XL].hyperlink |
|
Полезность: Нет оценки
|
kai пишет: | Сейчас в [OOXML]::[API_XL].hyperlink реализовано создание ссылок для переходов по url наружу, а внутри файла нет. Чтобы было, нужно дорабатывать... по заявке. |
Понятно, жаль)
Быстрый способ сделать все ссылки работающими в самом Excel - Найти и заменить (Ctrl+H) знак равенства на него же во всей книге |
|
![](templates/subSilver/images/spacer.gif) |
|