Сохранить mxl в Excel

Автор Харлампий Дымба, 11 июня 2026, 21:03

« назад - далее »

Харлампий Дымба

Появилась старая как мир задачка программно из 1С сохранять большие отчеты в xlsx для стороннего анализа.
v7moxel пока нет возможности поставить, там WinServer2003, Yoksel, кажется сохраняет только в xls (97-2003).
Пока записываю xls из 1С, поэтому открываю в Excel и перезаписываю уже в xlsx

ИмяФайла = ПолноеИмяФайлаБезРаcширения + ".xls";
Т.Записать(ИмяФайла,1);
ВходExcel = СоздатьОбъект("Excel.Application");
ВходExcel.DisplayAlerts=0;//не показывать всякие ненужные предупреждения 
ВходExcel.ScreenUpdating=0;//не обновлять экран при работе макроса 
ВходExcel.Application.Workbooks.Open(ИмяФайла,0);//0-не пересчитывать ссылки,
ВходExcel.ActiveWorkBook.SaveAs(ПолноеИмяФайлаБезРаcширения,51);//Книга по умолчанию	*.xlsx  
ВходExcel.ActiveWorkBook.Close();
ВходExcel = "";
ФС.УдалитьФайл(ИмяФайла);

Ну понятно, что при записи из 1С есть проблема с обрезание до 65535 строк.
Есть какие-то способы сохранить mxl в современный xlsx программно?

 

Злоп


Ветер в поле

Цитата: Злоп от 11 июня 2026, 22:29это не подойдет https://infostart.ru/1c/tools/1026032/
?

Вполне подойдет, но надо понимать, что вид таблицы не будет идентичным родному. Сейчас посмотрел и увидел, что автор компоненты дорабатывал ее в этой части, но я еще не протестировал, только скачал. Раньше масштаб сохраненных файлов сильно отличался от оригинального. Может сейчас стало лучше.

Харлампий Дымба

Цитата: Злоп от 11 июня 2026, 22:29это не подойдет
не подойдёт потому что:
Цитата: Харлампий Дымба от 11 июня 2026, 21:03v7moxel пока нет возможности поставить, там WinServer2003
Из описания v7moxel: "...Для работы требуется .Net Framework v4.6.2..." - а эта версия не встает на WinServer2003, так что v7moxel там не запустить.

Понятно, что я решу проблему, например:
Способ 1: кусками по 65535 строк сохранять таблицу, а потом объединять несколько xls в один xlsx уже движком Excel);
Способ 2: прогнуть админов на обновление ОС - и поставить v7moxel.
Но возможно у кого-нибудь найдётся решение поизящнее