1с excel формат файла не поддерживается
Существует несколько способов программной работы с файлами Excel из 1С. Каждый из них имеет свои преимущества и недостатки.
Обмен через табличный документ
Данный способ простой. Его суть заключается в том, что объект ТабличныйДокумент имеет методы:
- Записать (< ИмяФайла >, < ТипФайлаТаблицы >) для выгрузки данных в файл;
- Прочитать (< ИмяФайла >, < СпособЧтенияЗначений >) для загрузки данных из файла.
Внимание!
Метод Записать () доступен как на клиенте, так и на сервере. Метод Прочитать () доступен только на стороне сервера. Необходимо помнить об этом
при планировании клиент-серверного взаимодействия.
Рассмотрим пример сохранения табличного документа в файл. Необходимо любым способом создать и заполнить объект ТабличныйДокумент, а выгрузка в файл осуществляется всего лишь одной строкой:
ТабДок . Записать ( ПутьКФайлу , ТипФайлаТабличногоДокумента . XLSX );
Загрузка из файла осуществляется также достаточно просто:
ТабДок = Новый ТабличныйДокумент ;
ТабДок . Прочитать ( ПутьКФайлу , СпособЧтенияЗначенийТабличногоДокумента.Значение );
Обмен через OLE
Обмен через технологию OLE automation, пожалуй, самый распространенный вариант программной работы с файлами Excel. Он позволяет использовать весь функционал, предоставляемый Excel, но отличается медленной скоростью работы по сравнению с другими способами. Для обмена через OLE требуется установка MS Excel:
- На компьютере конечного пользователя, если обмен происходит на стороне клиента;
- На компьютере сервера 1С:Предприятие, если обмен происходит на стороне сервера.
Пример выгрузки:
Примеры чтения:
Для обхода всех заполненных строк листа Excel можно использовать следующие приемы:
Вместо последовательного обхода всех строк листа можно выгрузить все данные в массив и работать с ним. Такой подход будет быстрее при чтении большого объема данных:
ВсегоКолонок = Лист . Cells ( 1 , 1 ). SpecialCells ( 11 ). Column ;
ВсегоСтрок = Лист . Cells ( 1 , 1 ). SpecialCells ( 11 ). Row ;Область = Лист . Range ( Лист . Cells ( 1 , 1 ), Лист . Cells ( ВсегоСтрок , ВсегоКолонок ));
Данные = Область . Value . Выгрузить ();
В таблице ниже приведены наиболее востребованные свойства и методы для работы с Excel через OLE:
Для того, чтобы узнать какое свойство нужно менять или какой метод вызвать можно воспользоваться макросами Excel. Если записать макрос с требуемыми действиями, то после можно посмотреть программный код на VBA записанного макроса.
Использование COMSafeArray
Обмен через ADO
Файл Excel при обмене через ADO представляет собой базу данных, к которой можно обращаться при помощи SQL-запросов. Установка MS Excel не требуется, но обязательно наличие драйвера ODBC, при помощи которого будет осуществляться доступ. Используемый драйвер ODBC определяется при указании строки соединения к файлу. Обычно требуемый драйвер уже установлен на компьютере.
Обмен через ADO заметно быстрее обмена через OLE, но при выгрузке нет возможности использовать функционал Excel для оформления ячеек, разметки страниц, задания формул и т.д.
Пример выгрузки:
Для создания нового листа и формирования его структуры можно воспользоваться объектами ADOX.Catalog и ADOX.Table. В этом случае код примет вид:
В приведенном примере в методе
во втором параметре указывается тип колонки. Параметр необязательный, вот некоторые значения типа колонки:
Пример чтения:
В строке соединения параметр HDR определяет как будет восприниматься первая строка на листе. Возможны варианты:
В приведенных примерах рассмотрено лишь несколько объектов ADO. Объектная модель ADO состоит из следующих объектов:
- Connection;
- Command;
- Recordset;
- Record;
- Fields;
- Stream;
- Errors;
- Parameters;
- Properties.
Выгрузка без программирования
Для сохранения данных из 1С в Excel не всегда целесообразно прибегать к программированию. Если в режиме Предприятия пользователь может отобразить требуемые для выгрузки данные, то, их возможно сохранить в Excel без программирования.
В открывшемся окне требуется выбрать каталог, имя и формат сохраняемого файла.
Для сохранения данных динамических списков (например, списка номенклатуры) необходимо:
Остались вопросы?
Спросите в комментариях к статье.
При открытии файла XLS через ТабДок.Прочитать()
Ошибка при выполнении файловой операции . Формат файла не поддерживается.
Если исходный файл открыть в Excel и сохранить, ошибки нет.
Мне надо читать его программно. Кто-нибудь решал эту проблемку?
(0) попробуй переименовать в *.xlsx, экселю пофигу а 1С такую ошибку выдает если формат не соответствует расширению
(2) Лист один. Примечаний нет
(1) Расширение *.xls . В свойствах тип файла Лист Microsoft Excel 97–2003 (.xls)
(3) у xls и xlsx внутренняя структура. Если файл с новым форматом сохранить с расширением xls, то эксель его откроет, а не 1С нет. Просто попробуй, нет - будешь искать варианты дальше
Откуда файл взялся? С интернета каким-нибудь пых-скриптом создан?
Такое в таких случаях бывает, это же опенсорц, там делают на ХХП.
(5) Файл прислан по почте. Создается регламентом у контрагентов. Как-не знаю. Скорее всего ХХП
(6) 1С:Предприятие 8.3 (8.3.18.1128)
(4) Попробую.
(4) Переименование с другим расширением даёт тот же результат:"Формат не поддерживается"
(12) Экселем файл открывается без проблем. Сохраняю его без каких либо изменений. После этого он открывается из 1С без ошибок.
была недавно эта проблема, файл формировали какой то приблудой, в свойствах файла должно быть название, какой то там xl
тему поднимал "малоопытный" человек, наверно никак, но было ясно, что при формировании получаем файл не совсем той структуры, которая получается из самого экселя, типа как какого то оглавления не хватает или еще чего то подобного
проблема не совсем такая, но причина может быть аналогичная. Excelize во.
(16) Да, внутри похож на xls. похоже без экселя 1С его не съест.
(21) С таким тоже сталкивался, победить не смог.
(23) велосипед наверно только, как xml может или еще что
ну факт в том, что штатный механизм в таком случае не работает
(24) Так старый формат (xls) вроде не xml внутри и закрыт. И парсить xml это та ещё задача, ТС как раз ищет лёгких путей))). Здравой выглядит идея пересохранять файл экселем или сервисом каким, а потом читать штатно табличным документом
(26) кстати о сервисах) можно дать сервис поставщику файла и пусть льет напрямую
Повторное сохранение файла через открытие файла в Excel позволяет привести его формат к виду, который читается из 1С.
Может быть, подскажете командную строку или набор команд, который делает это без участия пользователя?
Тогда можно будет запустить обработку, которая читает файл с некорректным для 1С форматом и сохраняет обратно в хранилище.
У меня эти файлы лежат до времени в хранилище значений в регистре сведений.
Наведи порядок в своей работе используя конфигурацию 1C "Управление IT-отделом 8"
(41) В синтакс помощнике написано, что доступен.
ТабличныйДокумент (SpreadsheetDocument)
Прочитать (Read)
.
Доступность:
Сервер, толстый клиент, внешнее соединение, мобильное приложение(сервер).
(56) попробуйте загрузить mxl. Если получится, значит формат xlsx не поддерживается в мобильном приложении.(62) Получается файлы экселя в мобильную платформу загрузить никак нельзя (О_о)
mxl - через Прочитать() = ОК.
xml - через объект ЧтениеXML = ОК.
Остается только различие в платформах так а что у вакс не выходит-то ? где картинка ошибки?
И конечно же любопытный выбор
На СервереБезКонтекста - вы из каких соображений это выбрали? (3) Все картинки ошибок прикреплены к данному вопросу. Зачем мне контекст клиента на сервере при загрузке номенклатуры? Данная конфигурация будет работать в мобильном приложении и сервер там находится там же где и клиент. (4) извините , я не доглядел, но хотелось бы увидеть "Подробно. " (5) : Ошибка при вызове метода контекста (Прочитать)
ФайлЗагрузки.Прочитать(Каталог);
по причине:
Ошибка при выполнении файловой операции 'C:\Users\**********\Desktop\ТМЦ_ШтрихКоды.xls'. Формат файла не поддерживается.
ggg.Прочитать("C:\1C\Копия Апрель 2019.xlsx" );
А платформа какая?
а вам это принципиально? Это оба файлы EXCEL.xls старый формат.
Пользуйтесь новым (9) Мне не могут дать файл формата *.xlsx. Я могу и руками конвертировать форматы сидеть,но вопрос касался того что должен ли метод "Прочитать()" читать файлы формата *.xls или нет. Что бы я понимал свою ошибку, либо просто на будущее запомнил что прочитать в табличный документ ексель старого формата не смогу.
(11) старый формат тоже прекрасно читается!
У меня платформа 1С:Предприятие 8.3 (8.3.13.1865)
Что то у вас там еще не так.
Вы пробовали этот файл открывать екселем?может файл на самом деле битый? (19) это файл Excel 5.0/95
т.е. совсем старого формата 1995 года. Он не поддерживается. Хоть и имеет расширение xls (23) Расскажите пожалуйста где Вы это увидели? (у меня ОС Windows 10) (24) открыть файл Экселем и попытаться "Сохранить Как". Он и покажет текущий формат. (23) кстати выбор
Прочитать("C:\1C\Filehasfb.xls",,ТипФайлаТабличногоДокумента.XLS95 );
не решает проблемы.
Зачем тогда вообще ТипФайлаТабличногоДокумента.XLS95 , не в курсе?
(36) для обратной совместимости.
ТабДок.Записать
А вот для Прочитать 3 параметр. это рудимент. Его даже в справке нет.
Попробуйте место файла изменить!Вы пытаетесь от имени сервера влезть на свой рабочий стол, а у него может не быть на это прав.
Создайте папку где-нибудь (но не сетевую), общую и попытайтесь оттуда загружать (27) Не могу найти только где написана информацию, указанная "spacecraft". Не знаете где поглядеть? я то создавал xls из нового формата новым Excel , а это немного не одно и то же видимо. (28) Мне данный файл вообще с 1с7 дали с выгруженными данными, ссылаясь на то что новее 1с7 не позволяет.
С 1с7 не работал и вот думаю *.xlsx действительно что ли с 1с7 выгрузить нельзя? (30) Теоретически возможно, но кто ж это будет переписывать?
(30)Как вариант, можно прочитать ком объектом файл и пересохранить в новый формат.
А дальше уже стандартно, платформой.
Точнее, даже попробовать прочитать платформой, через Попытку Исключение - если будет такая ошибка - через ком пересохранить файл.
прочитать ком объектом файл и пересохранить в новый формат.
А дальше уже стандартно, платформой.
Точнее, даже попробовать прочитать платформой, через Попытку Исключение - если будет такая ошибка - через ком пересохранить файл.
Хорошая идея, но для пересохранения с помощью COM объекта нужен Exel что очень важно учесть, а не всегда он установлен.
С самого начала хотел применить данный функционал для загрузки данных с екселя в мобильное приложение, но, когда уже все было описано и протестировано на ТК, то в мобильном приложении оказалось что процедура Прочитать() недоступна. Не вначале на то что процедура не доступна, я все равно решил разобраться почему не грузится файл и доволен результатом, так как получил новые знания по работе с выгрузкой данных из Exel.
Невзначай спрошу еще один вопрос у Вас. Не подскажете как можно загрузить данные из Exel в мобильном приложении?
Зачем это нужно? Дело в том, что при сохранении табличного документа в формате Excel средствами платформы 8.1 файл получается просто неприличных размеров и совершенно непригоден к рассылке. К примеру, прайс-листы с картинками могли иметь размер до 15-20 Мб. После сохранения в формате 2007 размер уменьшался на порядок. В результате я написал процедуру, которая сохраняет MXL в XLSX. Но умные люди посоветовали, что не нужно плодить обработки и процедуры для одного формата. Поэтому я написал более универсальную процедуру, которая в идеале поддерживает все форматы MS Excel 2003 - 2007, в том числе Dbf, Pdf и таблицы Open (Libre) office. Я включил в процедуру наиболее востребованные по моему мнению форматы. Но каждый для себя может добавить необходимые форматы. Как говорится, MSDN Вам в помощь.
Тестировалось на MS Office 2003 с установленным пакетом совместимости и MS Office 2010.
Ниже приведена процедура сохранения табличного документа. Идея проста - табличный документ сохраняется средствами 1С в формате Excel 97, а потом средствами Excel сохраняется в выбранном формате. Прилагается простенькая обработка, демонстрирующая этот метод. Вы можете не скачивать обработку - модуль прост и понятен. А интерфейсную часть реализовать - как Ваша фантазия позволит.
Необходимо иметь установленный MS Excel 2003 с пакетом совместимости 2007 или MS Excel 2007 - 2010
// константы форматов 2003
// xlCSVWindows = 23;
// xlDBF2 = 7;
// xlDBF3 = 8;
// xlDBF4 = 11;
// xlDIF = 9;
// xlExcel9795 = 43;
// xlTextWindows = 20;
// xlUnicodeText = 42;
// xlWebArchive = 45;
// xlXMLSpreadsheet = 46;
// xlXMLData = 47;
// основные константы 2007
// These are the main file formats in Excel 2007-2010:
// 51 = xlOpenXMLWorkbook (without macro's in 2007-2010, xlsx)
// 52 = xlOpenXMLWorkbookMacroEnabled (with or without macro's in 2007-2010, xlsm)
// 50 = xlExcel12 (Excel Binary Workbook in 2007-2010 with or without macro's, xlsb)
// 56 = xlExcel8 (97-2003 format in Excel 2007-2010, xls)
// 57 = PDF
// 60 = xlOpenDocumentSpreadsheet OpenDocument Spreadsheet
// Запись табличного документа в формате 2007 EXCEL
//
// Параметры
// <пТабДок> - <ТабличныйДокумент> - табличный документ
// <пИмяФайла> - <Строка> - имя исходного файла.
// <пФорматФайла> - <Число> - константа, определяющая формат файла
//
Процедура ЗаписатьMXLВФормате2007 ( пТабДок , пИмяФайла , пФорматФайла = 51 ) Экспорт
СоответствиеРасширений = Новый Соответствие ;
СоответствиеРасширений . Вставить ( 51 , ".xlsx" );
СоответствиеРасширений . Вставить ( 45 , ".mht" );
СоответствиеРасширений . Вставить ( 46 , ".xml" );
СоответствиеРасширений . Вставить ( 23 , ".csv" );
СоответствиеРасширений . Вставить ( 9 , ".dif" );
СоответствиеРасширений . Вставить ( 8 , ".dbf" );
//работает только в 2007
СоответствиеРасширений . Вставить ( 47 , ".xml" );
СоответствиеРасширений . Вставить ( 57 , ".pdf" );
СоответствиеРасширений . Вставить ( 60 , ".ods" );
СоответствиеВерсий = Новый Соответствие ;
СоответствиеВерсий . Вставить ( 51 , "11.0" );
СоответствиеВерсий . Вставить ( 45 , "11.0" );
СоответствиеВерсий . Вставить ( 46 , "11.0" );
СоответствиеВерсий . Вставить ( 23 , "11.0" );
СоответствиеВерсий . Вставить ( 9 , "11.0" );
СоответствиеВерсий . Вставить ( 8 , "11.0" );
//работает только в 2007
СоответствиеВерсий . Вставить ( 47 , "12.0" );
СоответствиеВерсий . Вставить ( 57 , "12.0" );
СоответствиеВерсий . Вставить ( 60 , "12.0" );
«Excel не может открыть файл 'filename.xlsx', потому что формат файла или расширение файла недопустимы. Убедитесь, что файл не был поврежден и что расширение файла соответствует формату файла ».
Прежде чем нажать кнопку «Да», чтобы открыть файл, необходимо выяснить, почему файл может иметь неправильное расширение имени файла.
Файл мог быть:
Если вы или кто-то из ваших знакомых случайно переименовал файл с неверным расширением, вы можете смело открывать файл. Затем сохраните файл в формате файла с соответствующим расширением имени файла.
Если вы или кто-то из ваших знакомых специально переименовал файл с другим расширением, чтобы Excel распознал расширение имени файла, вы можете открыть его. Однако рекомендуется хранить файл с расширением имени файла, соответствующим его фактическому формату.
Причины этой ошибки Excel:
- Файл не совместим с версией Excel.
- Файл поврежден или поврежден.
Ручная модификация расширения
Несколько заинтересованных пользователей, которые также столкнулись с этой проблемой, сообщили, что им удалось решить проблему вручную (переименовав) расширение для различных популярных форматов Excel, пока они не нашли правильный.
Ноябрьское обновление 2021:
Теперь вы можете предотвратить проблемы с ПК с помощью этого инструмента, например, защитить вас от потери файлов и вредоносных программ. Кроме того, это отличный способ оптимизировать ваш компьютер для достижения максимальной производительности. Программа с легкостью исправляет типичные ошибки, которые могут возникнуть в системах Windows - нет необходимости часами искать и устранять неполадки, если у вас под рукой есть идеальное решение:
Используйте функцию «Открыть и восстановить» в MS Excel
Функция «Открыть и восстановить» - это функция в MS Excel для восстановления поврежденных файлов Excel. Чтобы использовать его, выполните следующие действия:
- Откройте приложение MS Excel
- Перейдите в Файл и выберите опцию Открыть.
- Выберите поврежденный файл и выберите Открыть и восстановить.
- Нажмите «Восстановить», чтобы начать ремонт.
Примечание. Если процесс восстановления Excel завершился неудачно при последнем использовании функции «Открыть и восстановить», повторите шаги с (i) по (v). Затем нажмите кнопку «Извлечь данные», чтобы извлечь значения и формулы из файла Excel.
Разблокировка файла
Оказывается, ошибка «Формат файла и расширение не совпадает» также может возникать из-за того, что она заблокирована в свойствах. Это типичный случай для файлов, загруженных из Интернета или полученных в качестве защиты через вложения электронной почты.
Откройте файл Excel в безопасном режиме.
Шаг 1: нажмите клавишу Windows + R, введите: excel.exe / safe и нажмите ОК.
Шаг 2: сохраните файл как .xlsx. Иногда полезно получить доступ к вашим данным, если Excel не может открыть файл .xlsx из-за повреждения файла.
CCNA, веб-разработчик, ПК для устранения неполадок
Я компьютерный энтузиаст и практикующий ИТ-специалист. У меня за плечами многолетний опыт работы в области компьютерного программирования, устранения неисправностей и ремонта оборудования. Я специализируюсь на веб-разработке и дизайне баз данных. У меня также есть сертификат CCNA для проектирования сетей и устранения неполадок.
Читайте также: