|
Чтение файла Excel | ☑ | ||
---|---|---|---|---|
0
Shalun
30.06.20
✎
16:15
|
Мое почтение, форумчане! Нужна Ваша помощь.
Есть обработка, которая считывает данные файла Exel. В модуле содержится код: ActiveCell = Excel.ActiveCell.SpecialCells(xlLastCell) В общем то модуль отрабатывает нормально, но если попадается защищенный (от изменений) документ, то пишет что метод SpecialCells не доступен для защищенного документа! Собственно и вопрос: Как обойти это ограничение, что бы так же читались и защищенные документы? Заранее благодарствую! |
|||
1
dka80
30.06.20
✎
16:17
|
Попробывать прочитать в табличный документ и обработать уже его
|
|||
2
Сияющий в темноте
30.06.20
✎
16:41
|
так не надо ее активизировать,а просто получи.
|
|||
3
Shalun
30.06.20
✎
17:59
|
Ребят, а можно немного поподробней, с примером? А то я честно говоря не спец в данном вопросе, не работал с файлами.
|
|||
4
Shalun
02.07.20
✎
17:22
|
Нашель! Кому интересно:
Excel.Sheets(НомерЛиста).UsedRange.Rows.Count - строки и Excel.Sheets(НомерЛиста).UsedRange.Columns.Count - колонки соответственно. Где НомерЛиста числовое значение листа, а Exel - COMОбъект. |
|||
5
SadrArt
02.07.20
✎
17:59
|
а ответ в (4) точно на (0)?
|
|||
6
dedmoroz777
02.07.20
✎
18:12
|
(5) Наверное нужно получить последнюю заполненную ячейку. Так что получится.
|
|||
7
Shalun
20.07.20
✎
15:39
|
(5) не совсем. :-)
(6) Данным кодом получаем количество строк и количество столбцов в документе. Далее цикличным перебором строк и столбцов считываем ячейки... Для СтрокаRow = 1 По RowCount Цикл Для КолонкаColumn = 1 По ColumnsCount Цикл Попытка ТабличныйДокумент.Область("R" + Формат(СтрокаRow, "ЧГ=100") +"C" + Формат(КолонкаColumn, "ЧГ=100")).Текст = Формат(ExcelЛист.Cells(СтрокаRow,КолонкаColumn).Value, "ЧГ="); ...... где то так. :-0 |
|||
8
Shalun
09.10.20
✎
13:33
|
Всем привет!
снова возвращаюсь к этой теме. Причина в том, что пытаюсь прочитать Эксел файл цже другим методом: ТабличныйДокумент.Прочитать(АдресФайла) В Табличном документе так же содержится защищенная ячейка, как и в самом файле. Далее пытаюсь получить значение ЗначениеЯчейки = ТабличныйДокумент.ПолучитьОбласть("R"+Row+"C"+Column).ТекущаяОбласть.Значение Пишет что "Недоступно для чтения", и выдает ошибку. Вот и возникает вопрос: Как получить значение ячейки в этом методе, если ячейка документа защищена? п.с. Пароль известен, подойдет вариант чтения ячейки с указанием пароля. |
|||
9
lEvGl
гуру
09.10.20
✎
13:35
|
по возможности гружу через ADODB
|
|||
10
lEvGl
гуру
09.10.20
✎
13:36
|
кода меньше, работает быстрее и не примитивным перебором
|
|||
11
lEvGl
гуру
09.10.20
✎
13:36
|
на защищенным документе, Кажется, проблем не было
|
|||
12
arsik
гуру
09.10.20
✎
14:00
|
(8) Попробуй вместо значения получать текст.
ЗначениеЯчейки = ТабличныйДокумент.ПолучитьОбласть("R"+Row+"C"+Column).ТекущаяОбласть.Текст; |
|||
13
arsik
гуру
09.10.20
✎
14:12
|
+(12) 1С нормально такие файлы прожевывает, но нужно понимать, что значений там не будет. Там всегда будет текст.
|
|||
14
Shalun
09.10.20
✎
15:38
|
(12) Если в ячейке находится число, то оно лежит именно в значении. Текст = "". По этому пустые данные получаются. Нужно именно значение.
(9) Можно пример кода? |
|||
15
Shalun
09.10.20
✎
15:40
|
(14)Не правильно написал. Если в ячейке вычисляемое значение, то данные будут именно в занчении, свойство "Текст" пустое.
|
|||
16
arsik
гуру
09.10.20
✎
15:46
|
(15) При чтении через ТабличныйДокумент? Да ты гонишь. Там все в текст переводится. Открой свой xlsx из 1С. Просто из Меню - Файл - Открыть.
|
|||
17
Shalun
09.10.20
✎
16:07
|
(16) Да все верно, переводит все в текст. Тубиш значение в текстовой формат. А поле Тест ячейки, остается пустым. :-(
|
|||
18
lEvGl
гуру
09.10.20
✎
20:56
|
(14) какое число, может там еще денежный формат в 1с можно подтянуть? тебе в эксель экономист маша завтра запхнет смайлик, окно с вайбером перепутала
получай так, чтобы было и преобразуй так как тебе надо |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |