Мне кажется делать форматирование через C\AL очень трудозатратно.
Суть нового метода такова:
Выгрузка происходит в фал с разделителями.
Параллельно с эти подготавливается шаблон
Подготавливатеся шаблон, в соответсвии с количеством строк
Код:
objSheetTL.Range(Строка шаблона).Copy;
objRangeOL := objSheetOL.Range("100000 строк отчета"));
objRangeOL.PasteSpecial(-4104); //Вставляю всё
Заполнение отформатированного файла данными при помощи
'Microsoft Excel 12.0 Object Library'.QueryTable
Код:
objRangeOL := objSheetOL.Cells;
objQueryTableL := objSheetOL.QueryTables.Add(STRSUBSTNO('TEXT;'+FileNameL,i),objRangeOL);
objQueryTableL.PreserveFormatting := TRUE;
objQueryTableL.RefreshStyle := 0; //xlOverwriteCells
objQueryTableL.TextFilePlatform := 866;
objQueryTableL.TextFileStartRow := 1;
objQueryTableL.TextFileParseType :=1 ;
objQueryTableL.TextFileTextQualifier := -4142; //xlTextQualifierNone
objQueryTableL.TextFileConsecutiveDelimiter := FALSE;
objQueryTableL.TextFileTabDelimiter := TRUE;
objQueryTableL.TextFileSemicolonDelimiter := FALSE;
objQueryTableL.TextFileCommaDelimiter := FALSE;
objQueryTableL.TextFileSpaceDelimiter := FALSE;
objQueryTableL.AdjustColumnWidth := FALSE;
objQueryTableL.Refresh(FALSE);
objQueryTableL.Delete;
и всё.
Это коротко о сути метода. Есть заморочки с подготовкой форматирования, данных и формул.