|
v7: Получить гиперссылку из ячейки Exel | ☑ | ||
---|---|---|---|---|
0
MiracMC
13.10.16
✎
15:47
|
Всем доброго времени суток.
Для чтения EXEL фалов использую вот такой код: Перем тзДанных; Процедура ПолучитьДанные() ФС.УстТекКаталог(сКатал); Если ФС.СуществуетФайл(СокрЛП(сФайл)) = 1 Тогда // ************************************************* работаем с EXCEL через ADO ********************************************************* ИмяТаблицы = "Лист1$"; флХедер = 0; // в первой строке будут не данные для заголовков (если флХедер=1, то имена полей будут взяты из первой строки таблицы) db=CreateObject("ADODB.Connection"); rs=CreateObject("ADODB.Recordset"); db.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+СокрЛП(сКатал) + СокрЛП(сФайл) +";Extended Properties=""Excel 8.0;"+?(флХедер=1,"","HDR=NO;")+"IMEX=1;"""; //db.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+НазваниеФайла+";Extended Properties=""Excel 8.0;HDR=NO; IMEX=1;"""; //HDR=NO - Имена полей имеют вид "F1, F2, F3..." то-есть буква "F" и порядковый номер колонки. Если данный параметр опустить // имена полей беруться из первой строки - для таблиц Экселя норма. Пока 1 = 1 Цикл Попытка db.Open(); Прервать; Исключение конецПопытки; КонецЦикла; rs.ActiveConnection = db; rs.CursorType = 3; rs.LockType = 2; rs.Source = "Select * from ["+ИмяТаблицы+"] where not f3 like ''"; Попытка rs.Open(); Исключение Сообщить("Ошибка при открытии файла " + СокрЛП(сФайл)); КонецПопытки; // Инициализируем колонки тзДанных = СоздатьОбъект("ТаблицаЗначений"); тзДанных.УдалитьСтроки(); Для iCount = 1 По rs.Fields.Count Цикл ИмяКолонки = rs.Fields.Item(iCount-1).Name; тзДанных.НоваяКолонка(ИмяКолонки,,,,ИмяКолонки,15,,); КонецЦикла; // Перебор данных rs.MoveFirst(); Пока rs.EOF() = 0 Цикл тзДанных.НоваяСтрока(); Для iCount = 1 По rs.Fields.Count Цикл Если ПустоеЗначение(rs.Fields(iCount-1).Value) = 0 Тогда тзДанных.УстановитьЗначение(тзДанных.КоличествоСтрок(),iCount,rs.Fields(iCount-1).Value); КонецЕсли; КонецЦикла; rs.MoveNext(); КонецЦикла; rs.Close(); db.Close(); db = ""; rs = ""; // данне получили, АDO закрыли ********************************************************************************************************** Иначе Сообщить ("Файл " + СокрЛП(сФайл) + " не существует!"); КонецЕслИ; КонецПроцедуры в строке тзДанных.УстановитьЗначение(тзДанных.КоличествоСтрок(),iCount,rs.Fields(iCount-1).Value); в ячейку тзДанных записывается значение из ячейки в файле Exel. Вопрос - как проверить наличие гиперссылки в ячейке и если она есть получить ее? Сразу скажу что через Excel.Application делать не вариант. Уж больно медленный этот способ. Заранее благодарен. |
|||
1
Это_mike
13.10.16
✎
15:48
|
а Йоксель?
|
|||
2
MiracMC
13.10.16
✎
15:55
|
(1) а есть пример?
|
|||
3
MiracMC
17.10.16
✎
11:23
|
АП на всякий случа
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |