Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

сохранить файл эксел (формат xls Microsoft Office Excel 97-2003 (.xls)) в формате xlsx

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

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

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


Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.