А подошёл способ с форума Майкрософт по ссылке выше?
Цитата |
---|
Сегодня нашел косяк!!! Файл сформирован из 1С , листы снизу скрыты(задвинуды полосой пролистывания) - прокруткой и при этом тормозит при копировании, перескакивании по ячейкам. Как только отодвигаю эту задвижку и становятся видны листы, так перестают тормозть файлы!!!! Проверил на 12 файлах, на 4х компьютерах!! Задвигаешь обратно (скрываешь листы, так сразу начинает тупить при копировании ячейки) |
Из первого поста не вся картина ясна, есть несколько неизвестных:
Цитата |
---|
shlang написал: почему файл, выкачанный из 1с, |
1. Какая платформа 1С (7.7, 8.х)
2. Каким способом сохраняется файл из 1С?
Для v8:
Код |
---|
ТабДокумент.Записать(ПолноеИмяФайла, ТипФайлаТабличногоДокумента.XLS);
Excel = Новый COMОбъект("Excel.Application");
Excel.WorkBooks.Open(ПолноеИмяФайла);
Excel.Visible = 0;
Excel.ActiveWindow.DisplayWorkbookTabs = 1;
Excel.ActiveWindow.TabRatio = 0.6;
FullName = Excel.ActiveWorkbook.FullName;
Excel.DisplayAlerts = false;
Excel.ActiveWorkbook.SaveAs(FullName, 18); // 18 - xls 97-2003; 51 - xlsx 2007-2013
//Excel.Visible = 1; // если нужно поработать дальше с книгой
//Excel.Application.Quit() // если просто выходим |
Для v7:
Код |
---|
ТабДокумент.Записать(ПолноеИмяФайла, "XLS");
Excel = СоздатьОбъект("Excel.Application");
Excel.WorkBooks.Open(ПолноеИмяФайла);
Excel.Visible = 0;
Excel.ActiveWindow.DisplayWorkbookTabs = 1;
Excel.ActiveWindow.TabRatio = 0.6;
FullName = Excel.ActiveWorkbook.FullName;
Excel.DisplayAlerts = false;
Excel.ActiveWorkbook.SaveAs(FullName, 18); // 18 - xls 97-2003; 51 - xlsx 2007-2013
//Excel.Visible = 1; // если нужно поработать дальше с книгой
//Excel.Application.Quit() // если просто выходим |
Цитата |
---|
wowick написал: 7.7 не знает такого формата, там только xls. |
Знает, если сохранять не средствами платфомы 1С
Код |
---|
ТабличныйДокумент.Записать("c:\Отчет.xls", 1); |
А как в примере выше - вызывая Excel.Application
Вот еще один способ, с созданием (копированием) листов в Excel:
Скрытый текст |
---|
Код |
---|
// Процедура копирует первый лист из книги ПутьИмяЛиста
// в книгу ПутьИмяКнигиОтчетов и присваивает этому листу имя НовоеИмяЛиста.
// Если книги ПутьИмяКнигиОтчетов еще нет - она создается
// Если в книге ПутьИмяКнигиОтчетов уже есть лист с именем НовоеИмяЛиста - он заменяется на новый
Процедура ПеренестиОтчетВКнигуExcel(ПутьИмяКнигиОтчетов, ПутьИмяЛиста, НовоеИмяЛиста,Ном) Экспорт
// Дотянуться до Экселя
Попытка
Эксель = СоздатьОбъект("Excel.Application");
Исключение
Предупреждение("У Вас на компьютере не установлен Microsoft Excel. Импорт невозможен!");
Возврат;
КонецПопытки;
// Сам Эксель невидимый
Эксель.Visible = 0;
// И лишних вопросов задавать не должен
Эксель.DisplayAlerts = 0;
// Получить книгу из параметра ПутьИмяКнигиОтчетов
Попытка
КнигаОтчетов = Эксель.Workbooks.Open(ПутьИмяКнигиОтчетов);
Исключение
КнигаОтчетов = Эксель.Workbooks.Add;
КнигаОтчетов.SaveAs(ПутьИмяКнигиОтчетов);
КонецПопытки;
// Получить книгу из параметра ПутьИмяЛиста
Попытка
ЛистОтчета = Эксель.Workbooks.Open(ПутьИмяЛиста);
Исключение
Предупреждение("Не найден файл "+ПутьИмяЛиста+"!");
Эксель = 0;
Возврат;
КонецПопытки;
// Попробовать удалить отчет НовоеИмяЛиста из книги, если он уже есть
Попытка
КнигаОтчетов.Worksheets(НовоеИмяЛиста).Delete();
Исключение
КонецПопытки;
// Скопировать лист из ЛистОтчета в КнигаОтчетов:
ЛистОтчета.Worksheets(1).Name = НовоеИмяЛиста;
ЛистОтчета.Worksheets(1).Copy(КнигаОтчетов.Worksheets(Ном));
ЛистОтчета.Close(0);
КнигаОтчетов.Save();
КнигаОтчетов.Close(-1);
Эксель = 0;
КонецПроцедуры |
|