|
Получение данных из Excel, | ☑ | ||
---|---|---|---|---|
0
Креатив
21.09.16
✎
11:27
|
На сервере у клиента стоит 1с УТ 10.3. Пользователи работают с ней через web application. Есть файл Excel, в котором находится прайс. Какой самый простой способ вытаскивать (выборочно) данные из этого файла? Excel на сервере не установлен.
|
|||
1
sapphire
21.09.16
✎
11:34
|
(0) На клиенте запихнуть всё в COMSafeArray и его передать на сервер.
|
|||
2
Креатив
21.09.16
✎
11:39
|
(1)А это точно простое решение?
Уточню на всякий случай. База файловая. |
|||
3
Креатив
21.09.16
✎
11:40
|
(2)+ А сервер терминальный.
|
|||
4
Vanilla26
21.09.16
✎
11:42
|
может ТабличныйДокумент.Прочитать(<ИмяФайла>, <СпособЧтенияЗначений>)
|
|||
5
virtozz
21.09.16
✎
11:48
|
Если нет экселя попробуй через com-объект ADODB.Recordset
|
|||
6
Креатив
21.09.16
✎
11:49
|
(5) А как у этого объекта дела обстоят с поиском?
|
|||
7
DrZombi
гуру
21.09.16
✎
11:50
|
(0) Через АДО :)
|
|||
8
Cyberhawk
21.09.16
✎
11:50
|
Если xlsx, то нативно
|
|||
9
virtozz
21.09.16
✎
11:54
|
(6) С помощью запросов типа "SELECT F1 AS Поле1, F2 AS Поле2 FROM [A1:AZ1000] WHERE условие". Все колонки именуются с буквы в F
|
|||
10
Креатив
21.09.16
✎
12:03
|
А где про это АДО лучше почитать? Или рыбу подкиньте.
Задачка совсем простая. Найти строчку с заданным артикулом(первая колонка). Взять из неё цену(третья колонка). |
|||
11
Vanilla26
21.09.16
✎
12:08
|
(10) а почему (4) не подходит? платформа не позволяет или это долго?
|
|||
12
Креатив
21.09.16
✎
12:11
|
(21)Всё-таки эксел - это не mxl. Да и память подгружать сильно будет.
|
|||
13
Vanilla26
21.09.16
✎
12:14
|
(12) ну он и ( *.xls и *.xlsx) читает...а про память хз, надо тестить
|
|||
14
DrZombi
гуру
21.09.16
✎
12:30
|
(10) http://catalog.mista.ru/public/163640/
Если покопаться, что можно получить список листов :) http://catalog.mista.ru/public/163724/ |
|||
15
Креатив
21.09.16
✎
12:36
|
(13){Форма.Форма.Форма(5)}: Ошибка при вызове метода контекста (Прочитать)
Таб.Прочитать("D:\1C\Moscow\прайс.xlsx"); по причине: Ошибка при выполнении файловой операции Платформа 8.2.19.130 |
|||
16
Креатив
21.09.16
✎
12:42
|
(14)Спасибо, почитаю.
|
|||
17
Vanilla26
21.09.16
✎
12:56
|
(15) а ну да.. эт с 8.3 пошло
|
|||
18
упс
21.09.16
✎
13:03
|
недавно столкнулись с проблемой с АДО - один контрагент шлёт файлы .xls, информация из которых должна загружаться в УС. И вот в один прекрасный день, в файлах, которые присылает контрагент, при их загрузке через АДО, в рекордсет не попадала последняя колонка. Если присланный файл открыть экселем или опенофисом и нажать Ctrl-S (ничего не изменяя), файл читается нормально (последняя колонка попадает), если грузить присланный - нет последней колонки, хоть убейся.
Проблема осложнялась тем, что заранее было неизвестно сколько колонок будет в присланном файле. Как контрагент формирует этот xls файл осталось неизвестным, выкрутились, с помощью вызова openoffice из 1С, пересохранения файла и автоматической повторной загрузкой. Просто для информации. |
|||
19
virtozz
21.09.16
✎
13:24
|
(10) У меня так сделано:
//Функция, позволяющая открыть файл Excel через ADO, т.е. обращается к файлу как к БД Функция ADOПодключение(ИмяФайла, СтрокаВыборки) Экспорт Файл = Новый Файл(ИмяФайла); //Проверяем на существование выбранный файл Если НЕ Файл.Существует() Тогда Предупреждение("Файл не указан или несуществует!"); Возврат Неопределено; КонецЕсли; //Удаляем лишний символ "\" в имени файла для корректного соединения через ADODB Стр_Файл = Файл.ПолноеИмя; Стр_Путь = Файл.Путь; Если Прав(Стр_Путь, 1) = "\" Тогда Стр_Путь = Лев(Стр_Путь, СтрДлина(Стр_Путь) - 1); КонецЕсли; //Устанавливаем соединение через ADODB к файлу Excel Соединение = Новый COMОбъект("ADODB.Connection"); Соединение.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Стр_Файл + ";Extended Properties=""Excel 8.0;HDR=No;IMEX=1"""; Попытка Соединение.Open(); Исключение Сообщить("Невозможно подключиться к Microsoft Excel Driver! |Возможно файл [" + Стр_Файл + "] открыт другим пользователем"); Возврат Неопределено; КонецПопытки; //Настраиваем свойства настройки НаборДанных = Новый COMОбъект("ADODB.RecordSet"); НаборДанных.ActiveConnection = Соединение; НаборДанных.CursorType = 3; НаборДанных.LockType = 3; Попытка НаборДанных.Open(СтрокаВыборки, Соединение); Возврат НаборДанных; Исключение Сообщить("Не удалось выполнить запрос к файлу Excel |" + ОписаниеОшибки(), СтатусСообщения.Важное); Возврат Неопределено; КонецПопытки; КонецФункции |
|||
20
Serginio1
21.09.16
✎
13:34
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |