helpf.pro
Регистрация
 +2 
Распечатать

Как выгрузить Таблицу значение в файл Excel?

Код 1C v 8.х
 Процедура СохранитьТаблицуВФайлExcel(Таблица, ПолноеИмяФайла="", ОткрыватьДиалогВыбораФайла=Истина, ВыгружаемыеКолонки="") Экспорт 
	
	Если ПустаяСтрока(ПолноеИмяФайла) ИЛИ ОткрыватьДиалогВыбораФайла Тогда
		Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение);
		Диалог.Заголовок		= "Сохранение документа Excel";
		Диалог.Фильтр			= "Документ Excel (*.xls)|*.xls";
		Диалог.Расширение		= "xls";
		Диалог.ПолноеИмяФайла	= ПолноеИмяФайла;
		Диалог.Каталог = УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(глЗначениеПеременной("глТекущийПользователь"), "ОсновнойКаталогФайлов");	
		Если (Диалог.Выбрать()) И (НЕ ПустаяСтрока(Диалог.ПолноеИмяФайла)) Тогда
			ПолноеИмяФайла = Диалог.ПолноеИмяФайла;
		Иначе 
			Возврат;
		КонецЕсли;
	КонецЕсли;
	
	ФайлНаДиске = Новый Файл(ПолноеИмяФайла);

	Попытка
 		// Загрузка Microsoft Excel
 		Состояние("Выгрузка данных из 1С в Microsoft Excel...");
 		ExcelПриложение = Новый COMОбъект("Excel.Application");
		Книга = ExcelПриложение.WorkBooks.Add();
		Лист = Книга.WorkSheets(1);
	Исключение
 		Сообщить("Ошибка при загрузке Microsoft Excel." 
			+ Символы.ПС + ОписаниеОшибки(), СтатусСообщения.Внимание);
 		Возврат;
	КонецПопытки;
	
	Если ПустаяСтрока(ВыгружаемыеКолонки) Тогда
		ТаблицаВыгрузки = Таблица.Скопировать();
	Иначе
		ТаблицаВыгрузки = Таблица.Скопировать(, ВыгружаемыеКолонки);
	КонецЕсли;
	
	Для Кол = 0 По ТаблицаВыгрузки.Колонки.Количество()-1 Цикл 
		Лист.Cells(1, Кол + 1).Value = ТаблицаВыгрузки.Колонки[Кол].Заголовок;
	КонецЦикла;
			
	Попытка
		
		Для Стр = 0 По ТаблицаВыгрузки.Количество()-1 Цикл
			
			Для Кол = 0 По ТаблицаВыгрузки.Колонки.Количество()-1 Цикл
				
				Если ТипЗнч(ТаблицаВыгрузки[Стр][Кол]) = Тип("Число") Тогда
					// Установним формат для типа Число
					//Лист.Cells(Стр + 2, Кол + 1).NumberFormat = "0,00";
					Лист.Cells(Стр + 2, Кол + 1).Value = ТаблицаВыгрузки[Стр][Кол];
				Иначе 
					// Для всех других типов установим формат "Текстовый"
					//Лист.Cells(Стр + 2, Кол + 1).NumberFormat = "@";
					Лист.Cells(Стр + 2, Кол + 1).Value = Строка(ТаблицаВыгрузки[Стр][Кол]);
				КонецЕсли;
				
			КонецЦикла;
		
		КонецЦикла;
		
		ExcelПриложение.DisplayAlerts = False;
		Книга.SaveAs(ПолноеИмяФайла); 
		ExcelПриложение.ActiveWorkbook.Close();
 		ExcelПриложение.Quit();
		
		Сообщить("Файл выгружен успешно: "  + ПолноеИмяФайла);
		
	Исключение
		
		Сообщить("Ошибка записи данных файла :" + ПолноеИмяФайла);
		Сообщить(ОписаниеОшибки());
		Попытка
			ExcelПриложение.Quit();
		Исключение
		КонецПопытки;
		
	КонецПопытки;
	
КонецПроцедуры
   
Разместил:   Версии: | 8.x | 8.2 УП |  Дата:   Прочитано: 24013
 +2 
Распечатать
Возможно, вас также заинтересует
10060 (0x0000274C): Попытка установить соединение была безуспешной 24
Установили новый терминальный сервер, на нем подняли 1С, терминальные пользователе неописуемо довольны, все просто летает :) И вот же надо было такому случиться, главному бухгалтеру не понравилось работать через терминал, а еще у нее свой ноутбук и
1C и Google Maps 21
была поставлена задача отображения на географической карте медицинских учреждений. После обзора предлагаемых решений был выбран сервис google. Но так же подобного рода подход будет работать и с картами сервиса yandex. Во время решения задачи было реш
1C: Enterprise Development Tools 52
И вот случилось долгожданное: Вышел 1C: Enterprise Development Tools - это среда для разработки конфигурации в IDE Eclipse. С сайта 1С: « 1C:Enterprise Development Tools » – это инструмент нового поколения для разработчиков бизнес-приложений систем
1Cv8.1CD - Файл данных достиг максимального размера! 9
1С выдает предупреждение " Файл данных достиг максимального размера" . Подскажите из - за чего это и как можно решить ? Превышен размер файла, обычно это сообщение возникает, когда размер файла 1Cv8.1CD приближается к 10 гигабайтам или размер ка
Cклонения по падежам 6
НаКлиенте Процедура Команда1(Команда) ФИО = " Иванов Иван Иванович" ; Падеж = 2; Пол = 1; Результат = СклонениеФИО(ФИО, Падеж, пол); Сообщить(Результат); КонецПроцедуры НаСервере Функция СклонениеФИО(ФИО, Падеж, пол) Результат = " " ;
Посмотреть все результаты поиска похожих
Комментарии
astonvilla
01.07.2014 09:34Комментарий: 3
astonvilla

Я делаю так - формирование файла происходит на клиенте, а заполнение данных, требующее обращения к данным выполняю в серверной функции. От использования временного хранилища отказался после нескольких месяцев эксплуатации, из-за возникновения необъяснимых глюков.Как вариант для формирования можно использовать табличную часть (если формат выгрузки будет неизменным), которую заполняйте перед формированием файла.

nonameforme
18.06.2014 10:57Комментарий: 2
nonameforme

Подскажите, как организовать выгрузку с использованием директив компиляции &Клиент и  &Сервер?

Gvozdinskij_V
15.05.2013 11:31Комментарий: 1
Gvozdinskij_V
Спасибо.
Полезная, для меня, процедура.
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.
Загрузка... Дождитесь завершения!