Имя: Пароль:
1C
1С v8
сохранить файл эксел (формат xls Microsoft Office Excel 97-2003 (.xls)) в формате xlsx
0 Новый1сник2
 
05.09.21
18:27
Доброго дня коллеги!
поставщики скидывают остатки и прайсы в формате (xls), вопрос к знатокам, как можно пересохранить этот файл в формате xlsx,
программно ?
1 VS-1976
 
05.09.21
18:30
А зачем менять формат?
2 ДенисЧ
 
05.09.21
18:31
Открыть в новом экселе и сохраниьт как
3 Новый1сник2
 
05.09.21
18:32
(1) настроена загрузка, читает только в формате xlsx, чтобы не переписывать загрузку, хотелось бы конвертировать xls в xlsx программно!
4 Новый1сник2
 
05.09.21
18:34
(2) благодарю, но юзеры не всегда продвинутые, да и лишние кнопки нажимать, так себе, хотелось бы автоматизировать. пользователю оставить только выбор файла.
5 VS-1976
 
05.09.21
18:34
(3) Странно, а что она не может брать файлы по маске .xls*
6 Новый1сник2
 
05.09.21
18:36
(5) файл то можно выбрать, только он не читается
7 ДенисЧ
 
05.09.21
18:36
(3) Измени загрузку, чтобы она умела читать и другие форматы
8 Новый1сник2
 
05.09.21
18:37
пользователей будет не сколько, обучать каждого не вариант
9 VS-1976
 
05.09.21
18:38
(6) Странно 1с-су ТабличныйДокумент, тем более com excel побарабану формат
10 Новый1сник2
 
05.09.21
18:38
(7) ну как бы есть уже рабочая версия, переписывать не то что нужно, если есть возможность просто сконвертировать в нужный формат.
11 VS-1976
 
05.09.21
18:39
(10) приведи кусок кода зашрузки
12 Новый1сник2
 
05.09.21
18:40
(9) ну у меня пишет ошибки на старый формат загружать не хочет, если есть вариант сконвертировать то будет норм., а переписывать не охота
13 Новый1сник2
 
05.09.21
18:40
(11) завтра только смогу скинуть код
14 VS-1976
 
05.09.21
18:42
(13) просто конвертация это. Загрузка в один каталог, потом перекидывание в другой ( что бы небыло проблем с попыткой одновременным доступом, открытием файла ). Проще код подправить, как мне кажется
15 Новый1сник2
 
05.09.21
18:44
(14) не факт, прочитать текущий файл и сохранить в другом формате, можно даже во временных файлах, должна быть какая то функция!?
16 Новый1сник2
 
05.09.21
18:45
код завтра скину
17 VS-1976
 
05.09.21
18:50
(15) просто представь сколько это ресурсов жрёт. Хотя если регламент не видит .xls то каталог в принципе может быть один. Но я бы пожалел компьютер и сотрудников )
18 Новый1сник2
 
05.09.21
18:55
(17) вот и я хочу их пожалеть, чтобы вручную не приходилось сохранять в нужном формате
19 Новый1сник2
 
05.09.21
18:56
по загрузке завтра скину то что есть
20 МихаилМ
 
05.09.21
18:57
21 ДенисЧ
 
05.09.21
19:00
(15) Есть функция. В екселе.
22 acht
 
05.09.21
19:33
(8) > пользователей будет не сколько
А. Ну то есть пользователей еще нет, а переписывать уже неохота. Осталось только перевести стрелки на фирму 1С и у нас будет новый гений.
23 Новый1сник2
 
06.09.21
08:16
с расширением xls, тоже грузит нормально, проблема в другом пишет ошибку при открытии файла в самом эксел https://ibb.co/BrbrfJc  , если файл сохранить в этом же формате то все норм грузит
24 ДенисЧ
 
06.09.21
08:16
(23) Откуда берутся эти файлы?
25 Новый1сник2
 
06.09.21
08:17
(24) поставщик скидывает
26 Новый1сник2
 
06.09.21
08:18
можно как то программно перезаписать?
27 Новый1сник2
 
06.09.21
08:18
&НаКлиенте
Процедура мЗагрузкаОстатков(Команда)
    Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
    Диалог.Заголовок = "Выберите файл Excel";
    Диалог.ПредварительныйПросмотр = Ложь;
    Диалог.Фильтр = "(*.xls,*.xlsx)|*.xls;*.xlsx;|Microsoft Excel 97/2000/XP/2003 (*.xls)|*.xls|Microsoft Excel 2007/2010 (*.xlsx)|*.xlsx";
    
    Если ЗначениеЗаполнено(Объект.Файл) Тогда
        Диалог.ПолноеИмяФайла= Объект.Файл;
    КонецЕсли;
    
    Если Диалог.Выбрать() Тогда
        ВыбранныйФайл = Диалог.ПолноеИмяФайла;
        Объект.Файл = ВыбранныйФайл;
        ЧтениеExcel_через_ТД(ВыбранныйФайл);
    КонецЕсли;
    
КонецПроцедуры
28 ДенисЧ
 
06.09.21
08:19
(25) Тогда задай вопрос поставщику - почему у тебя эксель ругается на его файлы.
Сильно подозреваю, они там их делают в левой программе (не 1с и не ексель). У сторонних либ такая проблема приблизительно в 146% случаев. Пусть разбираются.
29 Новый1сник2
 
06.09.21
08:24
(28) спрошу, только вряд ли поставщик будет что то у себя менять
30 Смотрящий
 
06.09.21
08:24
(23) Открой файл блокнотом, кинь картинку сюда, посмотрим что за файло такое приходит
31 SleepyHead
 
гуру
06.09.21
08:26
(28) наверное, из опенофиса в формате XML скидывают? Но он может и в XLSX, насколько я помню.
32 Новый1сник2
 
06.09.21
08:27
33 ДенисЧ
 
06.09.21
08:28
(32) Это xlsx, названный xls.
Переименовывай его при получении и всё будет коричнево.
34 Смотрящий
 
06.09.21
08:28
(33) +1
35 Новый1сник2
 
06.09.21
08:29
(33) Ок, попробую
36 Новый1сник2
 
06.09.21
08:44
(33) как переименовать, делаю
ПереместитьФайл(ВыбранныйФайл, СтрЗаменить(ВыбранныйФайл,"xls", "xlsx"));
как получить ссылку на файл?
37 ДенисЧ
 
06.09.21
08:44
(36) Шта?
У тебя есть имя. До переименования и после. В чём вопрос-то?
38 Новый1сник2
 
06.09.21
08:47
разобрался, спасибо
39 Новый1сник2
 
06.09.21
09:02
делаю так  НовФайл = СтрЗаменить(ВыбранныйФайл,".xls", ".xlsx");
НовФайл получается с расширением ".xlsxx", откуда еще одна "x" берется ?
40 ДенисЧ
 
06.09.21
09:03
(39) Позови того, у кого не лапки.
41 acht
 
06.09.21
09:07
(39) > откуда
Оттуда. У тебя ВыбранныйФайл уже содержит имя файла с расширением ".xlsx".
42 Новый1сник2
 
06.09.21
09:08
(41) в отладчике xls
43 acht
 
06.09.21
09:08
(42) Поздравляю
44 Новый1сник2
 
06.09.21
09:09
да получилось переименовать, но ошибка осталась
.xlsx'. Формат файла не поддерживается.
45 acht
 
06.09.21
09:10
Блокнотом посмотрти. Есть немаленький шанс, что там вообще html
46 ДенисЧ
 
06.09.21
09:10
(45) Мальчик, ты не тормоз... Ты стояночный якорь!
47 Новый1сник2
 
06.09.21
09:11
.xlsx, экселом то же не открывается
48 acht
 
06.09.21
09:12
(46) ... я не мальчик =)
49 Новый1сник2
 
06.09.21
09:12
просто .xls можно как то перезаписать?
50 acht
 
06.09.21
09:13
Переименуй в zip, посмотри что внутри
51 Новый1сник2
 
06.09.21
09:16
52 Новый1сник2
 
06.09.21
09:40
вот так еще пробовал
    Эксель = Новый COMОбъект("Excel.Application");    
        КнигаЗагрузки = Эксель.WorkBooks.Open(ВыбранныйФайл);
        КнигаЗагрузки.SaveAs(ВыбранныйФайл);
файл перезаписывается, а ошибка осталась
53 Sserj
 
06.09.21
09:56
(52) Потому как иногда нужно и документацию почитывать
https://docs.microsoft.com/ru-ru/office/vba/api/excel.workbook.saveas

Второй параметр FileFormat
54 nodrama
 
06.09.21
10:13
(0) А в чем проблема. открыть его програмно в 1с. и там же сразу сохранить в то же место, его в новый формат. Старый там же можно удалить. Далее открыть заново и работать уже с файлом нового формата ?
55 nodrama
 
06.09.21
10:16
(8) А обработка загрузки работает только с xls видимо потому что в процедуре выбора файла стоит ".xlsx"? там если добавить то будет и старый видеть. Выбрал старый. открыл его. программно сохранил в новый. и его же еще раз открыл и работаешь.
56 Новый1сник2
 
06.09.21
10:18
(55) загрузка работает и с xls  и с xlsx
57 Новый1сник2
 
06.09.21
10:20
благодарю за ответы, все получилось,
вот так работает

Если Диалог.Выбрать() Тогда
        ВыбранныйФайл = Диалог.ПолноеИмяФайла;
    
        Эксель = Новый COMОбъект("Excel.Application");    
        КнигаЗагрузки = Эксель.WorkBooks.Open(ВыбранныйФайл);
        КнигаЗагрузки.SaveAs(ВыбранныйФайл, 56);
        Эксель.Quit();
        
        Объект.Файл = ВыбранныйФайл;
        ЧтениеExcel_через_ТД(ВыбранныйФайл);
    КонецЕсли;
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс