используется следующий простой метод.
1. Сначала сохраняем табличное поле как файл формата "Документ HTML4" (//infostart.ru/public/77128/).
2. Полученный файл программно открываем и пересохраняем в нужном формате Excel.
Для реализации - в реквизиты формы отчета добавляем "ПутьКФайлу" - тип строка, к которому добавим функцию "ПутьКФайлуНачалоВыбора"
&НаКлиенте Процедура ПутьКФайлуНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; РежимДиалога = РежимДиалогаВыбораФайла.Сохранение; ДиалогВыбораФайла = Новый ДиалогВыбораФайла(РежимДиалога); ДиалогВыбораФайла.МножественныйВыбор = Ложь; ДиалогВыбораФайла.Заголовок = "Укажите путь выгрузки файла..."; ДиалогВыбораФайла.ПолноеИмяФайла = ПутьКФайлу; ДиалогВыбораФайла.Фильтр = "Excel(2007)(*.xlsx)|*.xlsx"; Если ДиалогВыбораФайла.Выбрать() Тогда ПутьКФайлу = ДиалогВыбораФайла.ПолноеИмяФайла; КонецЕсли; КонецПроцедурыТакже на форму выводим кнопку "ФормаКнопкаСохранитьВЭксель", с командой "СохранитьВЭксель"
&НаКлиенте Процедура СохранитьВЭксель(Команда)
ИмяФайлаHTML4 = СтрЗаменить(ПутьКФайлу,"xlsx","htm");
Результат.Записать(ИмяФайлаHTML4,ТипФайлаТабличногоДокумента.HTML4); Попытка ЭксельОбъект = Новый COMОбъект("Excel.Application"); ЭксельОбъект.Application.Visible = Ложь; Книга = ЭксельОбъект.Application.Workbooks.Open(ИмяФайлаHTML4); Книга.Windows(1).Visible = Истина; Книга.Application.DisplayAlerts = False; Книга.SaveAs(ПутьКФайлу,51); Книга.Close(); ЭксельОбъект.Application.Quit(); Исключение Сообщить(ОписаниеОшибки()); Возврат; КонецПопытки; КонецПроцедурыДополнительно.
Для того чтобы не было потери информации (особенно в части чисел), рекомендуется использовать в 1С, при выводе числовых показателей, следующий формат сумм:
ЧЦ=15; ЧДЦ=2; ЧРД=,; ЧГ=0
P.S. Исправлена строчка кода (приводила к невозможности в некоторых случаях увидеть полученный результат), новая строка выглядит так:
Книга.Windows(1).Visible = Истина;