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

Прочитать эксель в табличный документ без сервера

Прочитать эксель в табличный документ без сервера
Я
   GriGo
 
09.08.19 - 14:02
Нужно перенести данные из экселя в табличный документ на стороне клиента, не используя серверные методы. И не используя excell.application Это вообще возможно?
 
 
   Cyberhawk
 
1 - 09.08.19 - 14:03
Конечно
   Cyberhawk
 
2 - 09.08.19 - 14:04
Но откуда ограничение "без сервера"?
   Cyberhawk
 
3 - 09.08.19 - 14:04
В 1С так не бывает все равно
   Cyberhawk
 
4 - 09.08.19 - 14:04
В общем ЧтениеZipФайла тебе в помощь, а дальше уже дело техники
   Cyberhawk
 
5 - 09.08.19 - 14:05
Если конечно же это xlsx-формат
   dka80
 
6 - 09.08.19 - 14:06
Чем сервер-то вам не угодил? Или не знаете как передать с клиента на сервер файл?
   GriGo
 
7 - 09.08.19 - 14:15
(6) с клиента на сервер прекрасно передаю, но некоторым пользователям выдается сообщение, что "пермишн денаед".
   GriGo
 
8 - 09.08.19 - 14:18
(5) Формат, к сожалению, не всегда xlsx.
Но мне интересно, что дальше с этим "ЧтениеZipФайла" делать?
   dka80
 
9 - 09.08.19 - 14:20
(7) в какой момент?
   GriGo
 
10 - 09.08.19 - 14:27
(9) в момент записи двоичных данных в файл на сервере.

решил проблему следующим способом -  в качестве пути к файлу задал значение
ПутьКФайлу = КаталогВременныхФайлов() + "temp.xlsx"

Теперь при записи двоичных данных нет ошибки, но возникает ошибка при чтении данных в табличный документ:

ТабДок.Прочитать(ПутьКФайлу, СпособЧтенияЗначенийТабличногоДокумента.Текст);

ошибка: "Ошибка при выполнении файловой операции"
   НадюшаЯ
 
11 - 09.08.19 - 14:28
ПолучитьИмяВременногоФайла
   Ботаник Гарден Меран
 
12 - 09.08.19 - 14:31
С партнерских далей, как вариант:
"Реальный формат файла не соответствует расширению."
   dka80
 
13 - 09.08.19 - 14:32
&НаКлиенте
Процедура ПрочитатьФайл(Команда)
    
    Оп = Новый ОписаниеОповещения("НачатьПомещениеФайлаОкончание", ЭтотОбъект);
     АдресВременногоХранилища = "";
    НачатьПомещениеФайла(Оп, АдресВременногоХранилища, ПутьКФайлу,Ложь, ЭтаФорма.УникальныйИдентификатор);
    
КонецПроцедуры

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

Только следи за расширением файла. Например, важно xls или xlsx
   GROOVY
 
14 - 09.08.19 - 14:37
Без экселя можно грузить используя построитель запроса.
   vcv
 
15 - 09.08.19 - 14:41
Вроде свеженькие релизы 1С нормально читают эксель в штатный табличный документ. Правда только первый лист из многостраничного документа.
   GriGo
 
16 - 09.08.19 - 14:41
(13) (11) ПолучитьИмяВременногоФайла("xls") - сработало, спасибо.
Убей не помню, как я раньше без "получитьИзВременногоФайла" делал. Но это уже из области спортивного интереса. Еще раз спасибо, хорошего дня.
   GriGo
 
17 - 09.08.19 - 14:42
(14) это как?
   НадюшаЯ
 
18 - 09.08.19 - 14:42
(14) а это как?
   Ботаник Гарден Меран
 
19 - 09.08.19 - 14:51
(15)
Все листы.
   Смотрящий
 
20 - 09.08.19 - 15:03
(0) adodb не?
   GriGo
 
21 - 09.08.19 - 15:05
(20) пример приведешь?
   GriGo
 
22 - 09.08.19 - 15:05
(20) пример сможешь привести?
   Смотрящий
 
23 - 09.08.19 - 15:10
дай мыло. скину модуль вечером. для 10.3 писал
   dka80
 
24 - 09.08.19 - 15:23
(15) +19 каждый лист в отдельную область
   GROOVY
 
25 - 09.08.19 - 17:32
ТабДок=Новый ТабличныйДокумент;
ТабДок.Прочитать(ВыбранноеИмяФайла, СпособЧтенияЗначенийТабличногоДокумента.Значение);
    
ПостроительЗапроса=Новый ПостроительЗапроса;
ПостроительЗапроса.ИсточникДанных=Новый ОписаниеИсточникаДанных (ТабДок.Область("НазваниеЛиста")); 
ПостроительЗапроса.Выполнить();
//В файле первой строчкой должны идти названия колонок. Если этого не будет, то построитель не вернет ТЗ, т.к. не будут заданы имена колонок.

РезТаб=ПостроительЗапроса.Результат.Выгрузить();  //Выбрать или еще что-нить

Для Каждого СтрокаТЗ из РезТаб Цикл 
        
Товар = СтрокаТЗ.Товар;//Название колонки
   НадюшаЯ
 
26 - 09.08.19 - 17:57
(25) что то вроде этого да?
http://catalog.mista.ru/public/1050198/
   GROOVY
 
27 - 09.08.19 - 20:45
(26) Не, больше это напоминает: https://expert.chistov.pro/public/1050198/


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