|
Работа с Эксель | ☑ | ||
---|---|---|---|---|
0
bommba9
21.09.20
✎
09:39
|
Добрый день всем, как вытянуть нормально из екселя нужные области данных, не сильно понятно. Только начал с этой темой работать и получилось только считать по каждой ячейке, а дальше я даже алгоритм решения не представлю. Мне говорили как то сделать через соответствие.
|
|||
1
Андроны едут
21.09.20
✎
10:02
|
(0) как-то так:
Область = Лист.Range("ИмяОбласти").Select(); |
|||
2
Обработка
21.09.20
✎
10:24
|
(0) Куча коад в гугле.
Вот пример &НаКлиенте Процедура ВыполнитьПеренос(Команда) Попытка Excel = Новый COMОбъект("Excel.Application"); Excel.WorkBooks.Open(ПутьКФайлу); ExcelЛист = Excel.Sheets(1); Исключение Сообщить("Не установлено приложение MS Excel!"); Возврат; КонецПопытки; Попытка КонечнаяСтрокаДанных = Excel.Sheets(1).UsedRange.Rows.Count+2; КоличествоКолонокДанных = Excel.Sheets(1).UsedRange.Columns.Count; ДанныеЭксель = Excel.Range(Excel.Sheets(1).Cells(2,1), Excel.Sheets(1).Cells(КонечнаяСтрокаДанных,КоличествоКолонокДанных)).Value.Выгрузить(); Исключение Попытка Excel.Application.Quit(); Исключение Отказ = ИСТИНА; Возврат; КонецПопытки; КонецПопытки; Попытка Excel.Application.Quit(); Исключение Сообщить(ОписаниеОшибки()); КонецПопытки; ОбработатьДанные(ДанныеЭксель); КонецПроцедуры |
|||
3
Обработка
21.09.20
✎
10:25
|
Вторая процедура:
&НаСервере Процедура ОбработатьДанные(Массив) ЧислоСтрок = Массив[0].Количество(); ДокС = Док.ПолучитьОбъект(); Для К =0 По ЧислоСтрок-1 Цикл Арт = Массив[0][к]; Наим = Массив[1][к]; Кол = Массив[2][к]; Сум = Массив[3][к]; Если Арт = Неопределено Тогда Если Наим = Неопределено Тогда Сообщить("Не найдент товар!"+Строка(К)); Продолжить; Иначе Ном = Справочники.Номенклатура.НайтиПоНаименованию(Наим); КонецЕсли; Иначе Ном = Справочники.Номенклатура.НайтиПоРеквизиту("Артикул",Арт); КонецЕсли; |
|||
4
Garykom
гуру
21.09.20
✎
10:26
|
Любители оли откройте уже для себя ТабДок
|
|||
5
Garykom
гуру
21.09.20
✎
10:27
|
(4) *OLE
|
|||
6
Обработка
21.09.20
✎
10:29
|
(5) А если чуть чуть по подробней?
|
|||
7
Garykom
гуру
21.09.20
✎
10:30
|
||||
8
Василий Алибабаевич
21.09.20
✎
10:33
|
(7) Оно сломается на первом же файле, где в шапке будут объединенные ячейки.
|
|||
9
Василий Алибабаевич
21.09.20
✎
10:35
|
+ (8) Любой документ выпущенный из типовой и сохраненный в xls.
|
|||
10
Обработка
21.09.20
✎
10:39
|
(7) Спасибо годнота. Может и пригодится.
Как раз на серверах где нет установленного офиса быть может. А то я мучал их админов ставить на их сервера офис Или я ошибаюсь? |
|||
11
Василий Алибабаевич
21.09.20
✎
10:43
|
(10) Нет. Не ошибаешься. ТабличныйДокумент.Прочитать установленный офис не нужен.
|
|||
12
Андроны едут
21.09.20
✎
10:47
|
((8) + проблемы с чтением числовых данных и дат
|
|||
13
Обработка
21.09.20
✎
10:51
|
(12) В защите этой схемы скажу следующее.
1) Я всегда стараюсь в 1с грузить таблицы ексель без объединений без итогов и без всяких там заголовков. 2) Числовые данные и даты можно всегда переформатировать тут же. Даже при чтении через оле это всплывает. |
|||
14
Андроны едут
21.09.20
✎
11:04
|
(13) через оле можно переформатировать, так как читаем построчно, а как переформатировать ТабличныйДокумет хз. В справке написано:
в случае если в ячейке исходного документа содержалось значение типа Дата или Число, то в ячейку результирующего табличного документа это значение попадает в зависимости от значения этого параметра. Значение по умолчанию: Текст. |
|||
15
Megas
21.09.20
✎
11:28
|
(7) Блин круто, жалко что слишком много ограничений. Но для простейших файлов пойдёт.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |