1С8 пример. Вывод таблицы значений в табличный документ - файл mxl.

Небольшой набор функций для вывода таблицы значений в табличный документ. После формирования табличного документа, - сохраняем его в файл mxl.

Табличный документ можно сохранить a файлы следующих типов:
  • ANSITXT - Текстовый документ
  • DOCX - документ MS Word
  • HTML
  • HTML3
  • HTML4
  • HTML5
  • MXL
  • MXL7
  • ODS - Файл Open Office
  • PDF - файл Acrobat Readr
  • TXT - Текстовый документ
  • XLS - файл Excel
  • XLS95 - файл Excel95
  • XLS97 - файл Excel97
  • XLSX - файл Excel2010

1С. Сохраняем в файл mxl

Код:


// Получаем таблицу значения из файла. 
Функция ЗагрузитьТЗизФайла(ИмяФайла)	
		
	Путь = КаталогВременныхФайлов() + ИмяФайла; 
	Текст = Новый ЧтениеТекста(Путь, КодировкаТекста.UTF8); 
	стрТЗ = Текст.Прочитать(); 
	Текст.Закрыть(); 
	
	// получим таблицу значений из строки
	ТЗ = ЗначениеИзСтрокиВнутр(стрТЗ);	
	
	Возврат ТЗ;	
	
КонецФункции	

// mxl:

// Заполнить ячейки в строке  значениями 
//
Функция ЗаписьТЗ2ТабДок(записьТЗ,НомерСтроки,ТабличныйДокумент)
		
	НомерКолонки = 1;
	Символ160 = Символ(160);	
		
	// цикл по колонкам таблицы
	// РезультатЗапроса.Колонки.Количество()	// - количество колонок
	Для каждого полеТЗ из ЗаписьТЗ цикл 
		
		// значения ячейки в Excel
		типПоляТЗ = ТипЗнч(полеТЗ);
		
		если типПоляТЗ = Тип("Число") тогда 			
			
			полеТЗ=Строка(полеТЗ); 
			полеТЗ=СтрЗаменить(полеТЗ,Символ160,"");
			полеТЗ=СтрЗаменить(полеТЗ,",",".");
			
		иначеесли типПоляТЗ = Тип("Строка") тогда  	
			
		иначе		
			полеТЗ = строка(полеТЗ);
		КонецЕсли;	
		
		имяОбласти = "R" + номерСтроки + "C" + НомерКолонки;
		имяОбласти = СтрЗаменить(имяОбласти,Символ(160),""); 		
		Ячейка = ТабличныйДокумент.Область(имяОбласти);
		Ячейка.Текст = полеТЗ;

		НомерКолонки = НомерКолонки + 1;
	КонецЦикла;	    	
		
КонецФункции


// Заполнить наименованиями колонок таблицу
Функция НаимКолонок2Mxl(ТаблицаЗначений,ТабличныйДокумент)
    // массКолонки = новый массив();
	номерСтроки=1;
	номКолонки=1; 
	
	ТабличныйДокумент = новый ТабличныйДокумент;
	
	// цикл по коллекции колонок
	Для НомКол=0 по ТаблицаЗначений.Колонки.Количество() - 1 Цикл
		//Сообщить(Колонка.Имя + "(" + Колонка.ТипЗначения + ")" );			
		
		имяКолонки=ТаблицаЗначений.Колонки[НомКол].Имя;
		//ТабличныйДокумент.Область(
		имяОбласти = "R" + номерСтроки + "C" + номКолонки;
		имяОбласти = СтрЗаменить(имяОбласти,Символ(160),""); 		
		Ячейка = ТабличныйДокумент.Область(имяОбласти);
		
		//значениеЯчейки = СтрЗаменить(имяОбласти,Символ(160),""); 		
		Ячейка.Текст = имяКолонки;
		
		// на основе текущего шрифта сделаем Жирный
		ЖирныйШрифт = ?(ЖирныйШрифт = Неопределено,Новый Шрифт(Ячейка.Шрифт,,,Истина),ЖирныйШрифт); 		
		
		Ячейка.Шрифт = ЖирныйШрифт;
		
		номКолонки = номКолонки + 1;		
				
	КонецЦикла;
	
КонецФункции


// Заполнить построчно табличный документ
Функция Таблица2Mxl(ТаблицаЗначений,ТабличныйДокумент)
	
	//Выборка = РезультатЗапроса.Выбрать();
	НомСтр=1; // заполняем данными начиная со 2-й строки	
	
	// цикл по строкам таблицы
	Для каждого записьТЗ из ТаблицаЗначений Цикл
		
		НомСтр = НомСтр + 1;
				
		// цикл по колонкам таблицы		
		ЗаписьТЗ2ТабДок(записьТЗ,НомСтр,ТабличныйДокумент); 		
		
	КонецЦикла;	
	
КонецФункции


// Таблица значений в табличный документ
Функция ТаблицаЗначений2Mxl(ТаблицаЗначений,ФайлMxl)
			
	ТабличныйДокумент = новый ТабличныйДокумент;
	
	// вывести колонки
	НаимКолонок2Mxl(ТаблицаЗначений,ТабличныйДокумент);
	
	// вывести содержимое таблицы	
	Таблица2Mxl(ТаблицаЗначений,ТабличныйДокумент);
		
	ТабличныйДокумент.Записать(ФайлMxl,ТипФайлаТабличногоДокумента.MXL);
	
	ТабличныйДокумент.Показать(ФайлMxl,ФайлMxl);
	
	Возврат 0;
	
КонецФункции

Функция	Тест_ВыгрузитьТЗвMxl();
	
	файл_мТЗИсходныеДанные = "мТЗИсходныеДанные.dat";		
	
	ТЗ = ЗагрузитьТЗизФайла(файл_мТЗИсходныеДанные);	
	
	ФайлMxl = КаталогВременныхФайлов() + СтрЗаменить(файл_мТЗИсходныеДанные,".dat",".mxl");  
	
	ТаблицаЗначений2Mxl(ТЗ,ФайлMxl);
	
КонецФункции

Тест_ВыгрузитьТЗвMxl();

Результат:

1С. Сохраняем в файл mxl




Рекламный блок:

Предлагаем решение Ваших задач 1С.

Внедрение 1С:

Доработка и сопровождение 1С:

Ориентировочная стоимость работ программиста 1С : 500 р. за 1 час работы.

Пишите: j008@j008.ru

Звоните: 8 916 710 83 51 Ольга