Имя: Пароль:
1C
 
Есть ли ошибка при сохранении в Excel?
0 Анцеранана
 
25.06.15
14:02
Уважаемые коллеги , гугл мне почему -то не помог(
Ситуация такая. Я некоторую табличку выгружаю в Excel. Когда проверяю - все суммы, границы и пр. ложатся правильно, тем не менее Excel ругается:
"Действительный формат открываемого файла отличается от указываемого его расширением имени файла. Убедитесь, что не воарежден и получен из надежного источника.
Дальше еще окно выводится "Обнаружено содержимое которое не удалось прочитать".
Далее выводится табличка с надписью
Восстановленные записи: Формат из части /xl/styles.xml (Стили)
Потом открывается файл.

При открытии из 1С не открывается совсем пишет то же самое

Фрагмент кода выгрузки:

                    Если ТипЧисло Тогда
                        ЗначениеЯчейки = чЗначениеЯчейки;
                        Лист.Cells(НмрСтроки, НмрКолонки).NumberFormat = "@.@@"; //число с десятичными двумя знаками
                        //Excel.Range("A1").HorizontalAlignment = 'xlLeft';
                        Лист.Cells(НмрСтроки, НмрКолонки).HorizontalAlignment = -4152; //право
                    КонецЕсли;    
                    
                    Лист.Cells(НмрСтроки, НмрКолонки).WrapText = Истина; //перенос
                    Лист.Cells(НмрСтроки, НмрКолонки).Font.Name = "Arial";
                    Лист.Cells(НмрСтроки, НмрКолонки).Font.Size = Ячейка.Шрифт.Размер;
                    Лист.Cells(НмрСтроки, НмрКолонки).Font.Bold = ?(Ячейка.Шрифт.Жирный,1,0);
                    Лист.Cells(НмрСтроки, НмрКолонки).Font.Italic = ?(Ячейка.Шрифт.Наклонный,1,0);
                    
                    Попытка                     
                        Лист.Cells(НмрСтроки, НмрКолонки).Font.Underline = ?(Ячейка.Шрифт.Подчеркивание,2,1);                     
                    Исключение
                        Лист.Cells(НмрСтроки, НмрКолонки).Font.Underline = 1;                    
                    КонецПопытки;                     
                    
                    Если Ячейка.ЦветФона = ЦветГруппыДерева Тогда
                        Лист.Cells(НмрСтроки, НмрКолонки).Interior.ColorIndex = 15;  //цвет фона серый
                    КонецЕсли;                    
                    
                    Если Стр = 7 Тогда //во время вывода строки валовая прибыль
                        ШиринаКолонки = Ячейка.ШиринаКолонки;
                        Лист.Columns(НмрКолонки).ColumnWidth = ШиринаКолонки;
                    КонецЕсли;                     
                    
                    Лист.Cells(НмрСтроки, НмрКолонки).Value = ЗначениеЯчейки;

Записываю так:

Попытка
        Книга.SaveAs(ПутьКФайлу);
    Исключение
        Сообщить(ОписаниеОшибки()+" Файл не сохранен!");
    КонецПопытки;


Записывается без вопросов. Что может быть не так?
1 Анцеранана
 
25.06.15
14:06
Офис - 2010
Путь к файлу -  D:\Pascal\Таблицы\ООПУ.xls
2 фобка
 
25.06.15
14:18
Xlsx?
3 фобка
 
25.06.15
14:20
Закоменти часть кода с заполнением и тестируй последовательно раскомментируя
4 18_plus
 
25.06.15
14:28
Книга.SaveAs(ПутьКФайлу, <тут указать нужный формат файла>)
5 Анцеранана
 
25.06.15
14:28
(3) Даже при одной строчке .value тот же эффект
(2) А как проверить xlsx он или xls не по расширению?
6 18_plus
 
25.06.15
14:31
если xlsx переименовать в zip, то откроется как архив
7 18_plus
 
25.06.15
14:32
отсюда http://catalog.mista.ru/public/323606/

Excel.ActiveWorkbook.SaveAs(FullName, 18); // 18 - xls 97-2003; 51 - xlsx 2007-2013
8 Анцеранана
 
25.06.15
14:43
(7) Спасибо!) Помогло.
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший