Сохранение таблицы в Excel с фиксацией строк без использования com-объекта! - 14 Ноября 2013 - Профессиональные решения для 1С 8.2
      Профессиональные решения для 1С 8.2 Среда, 29.03.2017, 06:19
Меню сайта
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Форма входа
Поделиться ссылкой


Главная » 2013 » Ноябрь » 14 » Сохранение таблицы в Excel с фиксацией строк без использования com-объекта!
22:25
Сохранение таблицы в Excel с фиксацией строк без использования com-объекта!
Часто бывает нужно сохранить сформированный отчет в Excel. Сохранить таблицу достаточно просто, при сохранении нужно выбрать ТипФайлаТабличногоДокумента, однако некоторые параметры таблицы при этом теряются. Например, фиксация строк или столбцов, заданная в 1С и действующая в таблице mxl, при преобразовании в xlsx теряется. Можно было бы воспользоваться com-подключением к Excel, открыть файл, зафиксировать строки и записать. Однако, на компьютере, который формирует автоматический отчет, Excel не установлен, и покупать его никто не собирается! А фиксацию в файле сделать нужно, так как он будет автоматически отправлен по почте самому генеральному директору! Есть выход. Разберем файл xlsx, поменяем параметр и снова соберем.  
Пример работы обработки показан на картинке ниже.
 
Таблица
 
Код обработки:

Перем Каталог;
Процедура КнопкаВыполнитьНажатие(Кнопка)
    М=ЭтотОбъект.ПолучитьМакет("Макет");
    Т=Новый ТабличныйДокумент;
    Т.Вывести(М);
    Т.Записать(ВыбФайл,ТипФайлаТабличногоДокумента.XLSX);
    ОбработатьЭксель();   
КонецПроцедуры
Процедура ВыбПутьНачалоВыбора(Элемент, СтандартнаяОбработка)
    Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение);
    Диалог.Фильтр="*.xlsx|*.xlsx";
    Если Диалог.Выбрать() Тогда
        Каталог=Диалог.Каталог;
        ВыбФайл = Диалог.ПолноеИмяФайла;   
    КонецЕсли;
КонецПроцедуры
 
Процедура ОбработатьЭксель()
    ИмяФайла0=ВыбФайл;
    ИмяФайла=СтрЗаменить(ВыбФайл,Каталог,"");
    ИмяФайла=СтрЗаменить(ИмяФайла,".xlsx","");
    ЧтениеZipФайла = Новый ЧтениеZipФайла(ИмяФайла0);
    Для Каждого ТекЭл из ЧтениеZipФайла.Элементы Цикл
        Если ТекЭл.Имя="sheet1.xml" Тогда
            ПолнИмя=ТекЭл.ПолноеИмя;
        КонецЕсли;
    КонецЦикла;
    ЧтениеZipФайла.ИзвлечьВсе(Каталог+ИмяФайла+"\");
    ТД=Новый ТекстовыйДокумент;
    ТД.Прочитать(Каталог+ИмяФайла+"\"+ПолнИмя);
    Для Сч=1 по ТД.КоличествоСтрок() Цикл
        Стр=ТД.ПолучитьСтроку(Сч);
        Если СокрЛП(Стр)="<sheetView tabSelected=""true"" workbookViewId=""0""/>" Тогда
            Стр="<sheetView workbookViewId=""0"" tabSelected=""1""><pane state=""frozen"" activePane=""bottomLeft"" topLeftCell=""A2"" ySplit=""2""/><selection sqref=""A9"" activeCell=""A9"" pane=""bottomLeft""/></sheetView>";
            ТД.ЗаменитьСтроку(Сч,Стр);
        КонецЕсли;
    КонецЦикла;
    ИмяФайла2=Каталог+ИмяФайла+"\"+ИмяФайла+".xlsx";
    ЗаписьZipФайла = Новый ЗаписьZipФайла(ИмяФайла2);
    ТД.Записать(Каталог+ИмяФайла+"\"+ПолнИмя);
    ФФ=НайтиФайлы(Каталог+ИмяФайла+"\", "*.*", ложь);
    Для Каждого ТекФ из ФФ Цикл
        Если ТекФ.ПолноеИмя=Каталог+ИмяФайла+"\"+ИмяФайла+".xlsx" Тогда
            Продолжить;
        КонецЕсли;
    ЗаписьZipФайла.Добавить(ТекФ.ПолноеИмя+?(ТекФ.ЭтоКаталог(),"\",""),
        РежимСохраненияПутейZIP.СохранятьОтносительныеПути,
        РежимОбработкиПодкаталоговZIP.ОбрабатыватьРекурсивно);
    КонецЦикла;
    ЗаписьZipФайла.Записать();
    КопироватьФайл(ИмяФайла2,ИмяФайла0);
    УдалитьФайлы(Каталог+ИмяФайла+"\","*.*");
    УдалитьФайлы(Каталог,ИмяФайла);
  КонецПроцедуры
 
Код 1С добавлен на сайт при помощи оригинальной обработки
 
Обработку можно скачать здесь СохранениеВЭксельСФиксациейСтрок.epf
Просмотров: 1198 | Добавил: Programmer1C | Рейтинг: 5.0/1
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Поиск
Календарь
«  Ноябрь 2013  »
ПнВтСрЧтПтСбВс
    123
45678910
11121314151617
18192021222324
252627282930
Архив записей
Друзья сайта
  • Создать сайт
  • Современная Ароматерапия
  • Биодобавки из США
  • Заработок для web-мастера

  • Рейтинг@Mail.ru
    www.professional-1c.ru © 2017
    Бесплатный хостинг uCoz