предупреждение при открытии экспортированного .xls

  • Автор темы Umka
  • Дата начала
Статус
Закрыто для дальнейших ответов.
U

Umka

#1
Коллеги, кто-нибудь сталкивался?

После экспорта данных в .xls файл из 1с 8.1 при открытии его через Excel (версия 2007) появляется предупреждение от Excel: "Действительный формат открываемого файла (123.xls) отличается от указываемого его расширением файла. Перед открытием убедитесь, что он не поврежден..." и бла бла бла. Когда подтверждаю открытие - открывается "на Ура" без видимых дефектов.

Если же выбираю в предупреждении пункт "Справка", появляется окно справки со следующим сообщением "Не удается отобразить страницу XML. Не удается просмотреть ввод XML с использованием списка стилей XSL. Исправьте ошибку и затем нажмите кнопку "Обновить" или повторите попытку позднее. Не удается найти указанный объект. Ошибка при обработке ресурса ''../../awsbobcontrols.dtd''.


Привожу ниже листинг кода:

________________________________________________________________________________
__________________________
XLS = Новый COMОбъект("Excel.Application");
КнигаXLS = XLS.Workbooks.Add();
ЛистXLS = КнигаXLS.Worksheets(1);

//форматирование
ЛистXLS.Columns(1).ColumnWidth = 6;
ЛистXLS.Columns(2).ColumnWidth = 40;
ЛистXLS.Columns(3).ColumnWidth = 12;
ЛистXLS.Columns(4).ColumnWidth = 10;
ЛистXLS.Columns(5).ColumnWidth = 10;

ЛистXLS.Cells(5,1).Font.Bold = 1;
ЛистXLS.Cells(5,2).Font.Bold = 1;
ЛистXLS.Cells(5,3).Font.Bold = 1;
ЛистXLS.Cells(5,4).Font.Bold = 1;
ЛистXLS.Cells(5,5).Font.Bold = 1;

ЛистXLS.Cells(5,1).Borders.Linestyle = 1;
ЛистXLS.Cells(5,2).Borders.Linestyle = 1;
ЛистXLS.Cells(5,3).Borders.Linestyle = 1;
ЛистXLS.Cells(5,4).Borders.Linestyle = 1;
ЛистXLS.Cells(5,5).Borders.Linestyle = 1;



//выводим шапку документе
Заголовок = ЭтотОбъект.Комментарий;
Заголовок = СтрЗаменить(Заголовок, "Загружен по накладной","Приходная накладная (инвентаризация)");
ЛистXLS.Cells(1,1).Value = Заголовок;

ЛистXLS.Cells(5,1).Value = "№ п/п";
ЛистXLS.Cells(5,2).Value = "Наименование товара";
ЛистXLS.Cells(5,3).Value = "Количество";
ЛистXLS.Cells(5,4).Value = "Цена";
ЛистXLS.Cells(5,5).Value = "Сумма";

//выводим данные
ТЧ = Товары.Выгрузить();
н=6;
нСтроки = 1;
счКоличество=0;

Для Каждого Строка из ТЧ Цикл

ЛистXLS.Cells(н,1).Borders.Linestyle = 1;
ЛистXLS.Cells(н,2).Borders.Linestyle = 1;
ЛистXLS.Cells(н,3).Borders.Linestyle = 1;
ЛистXLS.Cells(н,4).Borders.Linestyle = 1;
ЛистXLS.Cells(н,5).Borders.Linestyle = 1;


ЛистXLS.Cells(н,1).Value = нСтроки;
ЛистXLS.Cells(н,2).Value = Строка.Номенклатура.Наименование;
ЛистXLS.Cells(н,3).Value = Строка.Количество;
ЛистXLS.Cells(н,4).Value = Строка.Цена;
ЛистXLS.Cells(н,5).Value = Строка.Сумма;

счКоличество = счКоличество+Строка.Количество;

н=н+1;
нСтроки=Нстроки+1;
КонецЦикла;

//выводим подвал


ЛистXLS.Cells(н,2).Font.Bold = 1;
ЛистXLS.Cells(н,3).Font.Bold = 1;
ЛистXLS.Cells(н,5).Font.Bold = 1;

ЛистXLS.Cells(н,1).Borders.Linestyle = 1;
ЛистXLS.Cells(н,2).Borders.Linestyle = 1;
ЛистXLS.Cells(н,3).Borders.Linestyle = 1;
ЛистXLS.Cells(н,4).Borders.Linestyle = 1;
ЛистXLS.Cells(н,5).Borders.Linestyle = 1;


ЛистXLS.Cells(н,2).Value = "итог";
ЛистXLS.Cells(н,3).Value = счКоличество;
ЛистXLS.Cells(н,5).Value = ЭтотОбъект.СуммаДокумента;

//сохраняем документ
КнигаXLS.SaveAs(ИмяФайла);

XLS.Application.Quit();

XLS = 0;
________________________________________________________________________________
_______________

Дело в том, что данный файл потом будет импортироваться в какую-то аудиторскую прогу и я боюсь чтобы не было проблем из-за этого предупреждения.

Буду признателен за подсказку!
 
U

Umka

#2
Сам докопался до ответа. У меня на ПК стоит офис 2007 и расширение у файла должно быть не .xls, a .xlsx

Когда поменял в коде расширение - предупреждение исчезло.
 

vbs

Well-known member
18.02.2007
1 708
1
#3
Haste is necessary at catching of fleas, and when them more than two only
 
U

Umka

#4
Коллеги, а из 1С нельзя в метод SaveAs() передать второй параметр - формат сохраняемого файла? Если верить MSDN то у данного метода класса Workbook есть огромное кол-во необязательных параметров и второй из них как раз - формат.
public virtual void SaveAs (
[OptionalAttribute] Object Filename,
[OptionalAttribute] Object FileFormat,
[OptionalAttribute] Object Password,
[OptionalAttribute] Object WriteResPassword,
[OptionalAttribute] Object ReadOnlyRecommended,
[OptionalAttribute] Object CreateBackup,
[OptionalAttribute] XlSaveAsAccessMode AccessMode,
[OptionalAttribute] Object ConflictResolution,
[OptionalAttribute] Object AddToMru,
[OptionalAttribute] Object TextCodepage,
[OptionalAttribute] Object TextVisualLayout,
[OptionalAttribute] Object Local
)

Мне надо чтобы 2007 иксель сохранял в формате xlExcel9795 : Excel version 95 and 97.
 
31.08.2009
5
0
#5
Сам докопался до ответа. У меня на ПК стоит офис 2007 и расширение у файла должно быть не .xls, a .xlsx

Когда поменял в коде расширение - предупреждение исчезло.
Да. Это ты правильно докопался!

Коллеги, а из 1С нельзя в метод SaveAs() передать второй параметр - формат сохраняемого файла? Если верить MSDN то у данного метода класса Workbook есть огромное кол-во необязательных параметров и второй из них как раз - формат.
public virtual void SaveAs (
[OptionalAttribute] Object Filename,
[OptionalAttribute] Object FileFormat,
[OptionalAttribute] Object Password,
[OptionalAttribute] Object WriteResPassword,
[OptionalAttribute] Object ReadOnlyRecommended,
[OptionalAttribute] Object CreateBackup,
[OptionalAttribute] XlSaveAsAccessMode AccessMode,
[OptionalAttribute] Object ConflictResolution,
[OptionalAttribute] Object AddToMru,
[OptionalAttribute] Object TextCodepage,
[OptionalAttribute] Object TextVisualLayout,
[OptionalAttribute] Object Local
)

Мне надо чтобы 2007 иксель сохранял в формате xlExcel9795 : Excel version 95 and 97.
Вообще, есть ли смысл всё экспортировать в Эксель???
1Сина сама может сохранять табличный документ в формате 95-97ого Экселя. Можно его генерить в 1Сине и сохранять в формате Экселя вообще без участия самого Экселя...
Но если уж так сильно нужно именно в Экселе всё это сделать то, скорее всего, передать параметр FileFormat можно (без передачи файл сохраняется в формате по умолчнию 2007). По крайней мере в Word параметры передаются. Только как пишется параметр обозначающий формат 95-97ого Экселя не знаю. Вполне, может быть, что в справке найдёшь...


Name Value Description
xlExcel9795 43 Excel9795
Цитата из справки по Экселю :) Пробуй...
 
Статус
Закрыто для дальнейших ответов.