|   |   | 
| 
 | Слетают рисунки в эксель | ☑ | ||
|---|---|---|---|---|
| 0
    
        Dolphinbet 27.08.15✎ 12:54 | 
        Сохраняю табличный документ с рисунком в эксель. Все нормально открываю - рисунок на месте. Далее такой код (на сервере):
 excel = Новый COMОбъект("Excel.Application"); excel.DisplayAlerts = 0; excel.EnableEvents = 0; Книга = excel.WorkBooks.Open(ПутьКФайлуотчета); Книга.SaveAs(ПутьКФайлуотчета); excel.Application.Quit(); После этой операции при открытии файла там где должен быть рисунок надпись "Часть рисунка с идентификатором отношения rID1 не найдена в файле". Что могло случиться с рисунком при пересохранении файла? | |||
| 1
    
        фобка 27.08.15✎ 12:57 | 
        Формат файла может задать?     | |||
| 2
    
        Dolphinbet 27.08.15✎ 13:02 | 
        (1) Формат xlsx     | |||
| 3
    
        фобка 27.08.15✎ 13:04 | 
        Saveas(путь, 50);     | |||
| 4
    
        Dolphinbet 27.08.15✎ 13:04 | 
        Кстати вот тоже подобная проблема http://axforum.info/forums/showthread.php?t=34203     | |||
| 5
    
        Dolphinbet 27.08.15✎ 13:05 | 
        (3)    Книга.SaveAs(ПутьКФайлуотчета, 50);
 по причине: Произошла исключительная ситуация (Microsoft Excel): Данное расширение нельзя использовать с выбранным типом файла. Измените расширение в поле "Имя файла" или выберите другой тип файла в списке "Тип файла". | |||
| 6
    
        фобка 27.08.15✎ 13:11 | 
        (4) погодь
 (5) да?) а так saveas(путь, -4143) еще надо параметр accsessmode глянуть типа Saveas(,-4143,,,,,2) | |||
| 7
    
        фобка 27.08.15✎ 13:15 | 
        50 - это эксель 2007 (xlExel12), у тебя какой?     | |||
| 8
    
        Dolphinbet 27.08.15✎ 13:16 | 
        (6) Теперь файл не открывается в эксель, пишет что формат недопустимый)     | |||
| 9
    
        Dolphinbet 27.08.15✎ 13:16 | 
        У меня вот такой:
 ТабДок.Записать(ПутьКФайлуотчета, ТипФайлаТабличногоДокумента.XLSX); | |||
| 10
    
        фобка 27.08.15✎ 13:17 | 
        (9) это понятно, эксель какой?     | |||
| 11
    
        Dolphinbet 27.08.15✎ 13:27 | 
        (10) Excel 2010     | |||
| 12
    
        фобка 27.08.15✎ 13:36 | 
        (11) походу 51     | |||
| 13
    
        Dolphinbet 27.08.15✎ 13:40 | 
        (12) походу, только картинки по прежнему слетают..     | |||
| 14
    
        фобка 27.08.15✎ 13:44 | 
        (13) значит дело не в формате :)     | |||
| 15
    
        Dolphinbet 27.08.15✎ 13:49 | 
        (14) попробовал выполнить тот же код на клиенте - все норм. Значит дело в выполнении на сервере..     | |||
| 16
    
        Dolphinbet 27.08.15✎ 13:56 | 
        только вариант "на клиенте " мне не подходит(     | |||
| 17
    
        фобка 27.08.15✎ 14:05 | 
        Сложно сказать - не сталкивался. Если переимонвать файл в zip и посмотреть внутри - картинка существует?     | |||
| 18
    
        Dolphinbet 27.08.15✎ 14:12 | 
        Вообще некоторые советуют отказаться от использования "Excel.Application" (например корпорация Microsoft).
 Соответственно у меня вопрос, какая есть альтернатива? ADO? | |||
| 19
    
        Dolphinbet 27.08.15✎ 14:13 | 
        Допустим у меня есть такой несложный код:
 excel = Новый COMОбъект("Excel.Application"); excel.DisplayAlerts = 0; excel.EnableEvents = 0; Книга = excel.WorkBooks.Open(ПутьКотчету); List = Книга.Sheets(1); List.columns(6).Delete(-4159); List.Cells(14,6).Select(); excel.ActiveWindow.FreezePanes = 1; ВсегоКолонок = List.Cells(1,1).SpecialCells(11).Column; Для i=6 по ВсегоКолонок цикл List.columns(i).ColumnWidth = 100; List.columns(i).AutoFit(); КонецЦикла; ВсегоСтрок = List.Cells(1,1).SpecialCells(11).Row; Для i=1 по ВсегоСтрок цикл List.rows(i).AutoFit(); КонецЦикла; старт = List.columns(13); финиш = List.columns(ВсегоКолонок); List.Range(старт, финиш).Group(); Книга.SaveAs(ПутьКотчету); excel.Application.Quit(); Как сделать тоже самое через ADO? | |||
| 20
    
        Dolphinbet 27.08.15✎ 14:16 | 
        Корпорация Microsoft на сегодняшний день не рекомендует производить и не поддерживает автоматизацию программ из пакета Microsoft Office с помощью автоматических, неинтерактивных клиентских приложений или компонентов (включая ASP, DCOM и службы NT), поскольку при запуске в этом окружении программы пакета Office могут работать нестабильно или зависать.     | |||
| 21
    
        фобка 27.08.15✎ 14:36 | 
        (20) адо для чтения/записи данных ток (имхо), не знаю можно так форматами и свойствами управлять     | |||
| 22
    
        Dolphinbet 27.08.15✎ 14:43 | 
        Вот что пишет Майкрософт по поводу серверной автоматизации https://support.microsoft.com/ru-ru/kb/257757     | |||
| 23
    
        Dolphinbet 27.08.15✎ 14:44 | 
        Если честно я среди альтернатив ничего не нашел подходящего. Не встраивать в файл макрос чтоб он отрабатывал на стороне клиента. Вряд ли какому-то клиенту это понравится)     | |||
| 24
    
        Dolphinbet 27.08.15✎ 14:47 | 
        Намного лучшей скорости и масштабируемости при редактировании некоторых встроенных двоичных форматов можно достичь средствами Web-компонентов Office (OWC) или объектов данных ActiveX (ADO). Просмотр и изменение свойств документов возможны без применения автоматизации, а для управления файлами и версиями используются серверные расширения FrontPage (FPSE) или Distributed Authoring and Versioning (DAV).     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |