1. Наш канал codeby в telegram. Пишем об информационной безопасности, методах защиты информации, о программировании. Не пропускай новости с кодебай, будь в тренде ! Подробнее ...

    Скрыть объявление

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

Тема в разделе "Базы данных и администрирование", создана пользователем Umka, 19 авг 2009.

Статус темы:
Закрыта.
  1. Umka

    Umka Гость

    Репутация:
    0
    Коллеги, кто-нибудь сталкивался?

    После экспорта данных в .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;
    ________________________________________________________________________________
    _______________

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

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

    Umka Гость

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

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

    vbs Well-Known Member

    Репутация:
    0
    Регистрация:
    18 фев 2007
    Сообщения:
    1.708
    Симпатии:
    3
    Haste is necessary at catching of fleas, and when them more than two only
     
  4. Umka

    Umka Гость

    Репутация:
    0
    Коллеги, а из 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.
     
  5. ilyuhin

    ilyuhin Member

    Репутация:
    0
    Регистрация:
    31 авг 2009
    Сообщения:
    5
    Симпатии:
    0
    Да. Это ты правильно докопался!

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


    Name Value Description
    xlExcel9795 43 Excel9795
    Цитата из справки по Экселю :) Пробуй...
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей