Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Считать файл EXCEL в таблицу значений

Считать файл EXCEL в таблицу значений
Я
   Iori
 
29.04.21 - 17:30
Раньше не было проблем считать файл EXEL с помощью COMОбъект("Excel.Application"). Сейчас вопрос стал следующий: Есть ли методы прочитать файл EXEL в таблицу значений, если на компе нет установленного самого EXEL?
   ДенисЧ
 
1 - 29.04.21 - 17:32
ТабличныйДокумент.Прочитать()
И потом уже из табдока любыми средствами
   Iori
 
2 - 29.04.21 - 17:35
Понял. Спасибо. Сейчас попробую...
   Pro-tone
 
3 - 29.04.21 - 18:42
Даже XLT читает, но его надо сперва переименовать в XLS
   Гений 1С
 
4 - 29.04.21 - 20:42
(0) Эх, молодость-зеленость, мой гений тебе дарит:


Функция ЗагрузитьТаблицуЗначенийИзФайла(ИмяФайла, Параметры = Неопределено) Экспорт
    //2021-01-19

    ТД = Новый ТабличныйДокумент();
    ТД.Прочитать(ИмяФайла, СпособЧтенияЗначенийТабличногоДокумента.Текст);
    ПараметрСтрокаШапки = 1;
    ОбязательныеПоля = Новый Массив();
    Если Параметры <> Неопределено Тогда
        Если Параметры.Свойство("СтрокаШапки") Тогда
            ПараметрСтрокаШапки = Параметры.СтрокаШапки;
        КонецЕсли;
        Если Параметры.Свойство("ОбязательныеПоля") Тогда
            ПараметрОбязательныеПоля = Параметры.ОбязательныеПоля;
        Иначе
            ПараметрОбязательныеПоля = Новый Массив();
        КонецЕсли;
    КонецЕсли;
    МассивКолонок = Новый Массив();
    МассивОбязательныхКолонок = Новый Массив();
    ТЗ = Новый ТаблицаЗначений();
    Для ИндКол = 1 ПО ТД.ШиринаТаблицы Цикл
        Текст = Сокрлп(ТД.Область(ПараметрСтрокаШапки, ИндКол).Текст);
        Если Текст = "" Тогда
            Продолжить;
        КонецЕсли;
        МассивКолонок.Добавить(ИндКол);
        ИмяКолонки = ОставитьДопустимыеДляКлючаСтруктурыСимволы(Текст, "_");
        ТЗ.Колонки.Добавить(ИмяКолонки);
        Для Каждого Эл ИЗ ПараметрОбязательныеПоля Цикл
            Если Эл = ИмяКолонки Тогда
                МассивОбязательныхКолонок.Добавить(ИндКол);
            КонецЕсли;
        КонецЦикла;
    КонецЦикла;
    
    Для ИндСтр = ПараметрСтрокаШапки + 1 По ТД.ВысотаТаблицы Цикл
        
        ЕстьЗаполненные = ложь;
        
        Для Каждого ИндКол ИЗ МассивОбязательныхКолонок Цикл
            Текст = Сокрлп(ТД.Область(ИндСтр, ИндКол).Текст);
            Если Текст <> "" Тогда
                ЕстьЗаполненные = истина;
                Прервать;
            КонецЕсли;
        КонецЦикла;
        
        Если НЕ ЕстьЗаполненные Тогда//Пропускаем строку

            Продолжить;
        КонецЕсли;
        
        НСтр = ТЗ.Добавить();
        Для СчКолонки = 0 По МассивКолонок.Количество() -1 Цикл
            ИндКол = МассивКолонок[СчКолонки];
            Текст = Сокрлп(ТД.Область(ИндСтр, ИндКол).Текст);
            НСтр[СчКолонки] = Текст;
        КонецЦикла;
    КонецЦикла;
    
    Возврат ТЗ;
    
КонецФункции


Функция ОставитьДопустимыеДляКлючаСтруктурыСимволы(Ключ, ЗаменятьНедопустимыеНа = "")
    ДопустимаяСтрока = "АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890_";
    Рез = "";
    Для Инд = 1 По СтрДлина(Ключ) Цикл
        Симв = Сред(Ключ, Инд, 1);
        Если Найти(ДопустимаяСтрока, ВРег(Симв)) = 0 Тогда
            Рез = Рез + ЗаменятьНедопустимыеНа;
        Иначе
            Рез = Рез + Симв;
        КонецЕсли;
    КонецЦикла;
    Возврат Рез;
КонецФункции



&НаКлиенте
Процедура Загрузить(Команда)
    Ф = Новый Файл(ФайлЗагрузки);
    ДД = Новый ДвоичныеДанные(ФайлЗагрузки);

&НаСервере
Функция ЗагрузитьНаСервере(ДД, Расширение, Ссылка)        
    Результат = Новый Структура(
    "ОК, Ошибки" , ложь, "");
    ИмяФайла = ПолучитьИмяВременногоФайла(Расширение);
    ДД.Записать(ИмяФайла);

    ПараметрыТЗ = Новый Структура();
    ОбязательныеПоля = Новый Массив(); ОбязательныеПоля.Добавить("Номенклатура");
    ПараметрыТЗ.Вставить("ОбязательныеПоля", ОбязательныеПоля);
    ТЗ = ЗагрузитьТаблицуЗначенийИзФайла(ИмяФайла, ПараметрыТЗ);



   Garykom
 
5 - 29.04.21 - 21:06
(4) геня а где листики то?
   Garykom
 
6 - 29.04.21 - 21:06
(5) + Sheets которые внутри Workbook ?
   Chameleon1980
 
7 - 29.04.21 - 21:14
(4)обрывки какие-то
   Гений 1С
 
8 - 29.04.21 - 21:15
(5) они будут слиты в один эксель. а че?
(7) не завидуй
   Chameleon1980
 
9 - 29.04.21 - 21:20
да уж "есть чему"
   Ненавижу 1С
 
10 - 29.04.21 - 22:02
(8) ОставитьДопустимыеДляКлючаСтруктурыСимволы работает некорректно работают для ключей начинающихся на цифры
   ГдеСобакаЗарыта
 
11 - 30.04.21 - 01:44
А по ADO уже не модно читать? Через ТабДок Лучше?
   ДенисЧ
 
12 - 30.04.21 - 03:59
(11) По адо на линухе?

Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.