Имя: Пароль:
1C
1С v8
xlsx vs ado
0 Cool_Profi
 
23.03.18
12:25
Есть ексель-файлик, который мне выгружают с внешнего сервиса.

Хочу его прочитать.
Читаю так

еБаза=Новый COMОбъект("ADODB.Connection");
СтрокаПодключения = "
|Provider=Microsoft.ACE.OLEDB.12.0;
|Data Source=C:\Users\cd\AppData\Local\Temp\v8_7537_12b.xlsx;
|Extended Properties="Excel 12.0 XML;IMEX=1;HDR=Yes;";
"
еБаза.Open(СтрокаПодключения);

получаю "Произошла исключительная ситуация (Microsoft Access Database Engine): Внешняя таблица не имеет предполагаемый формат."

поиск показал, что в файле что-то не так. Если этот файл открыть в екселе и пересохранить - он открывается нормально.

Отсюда вопрос - что может быть не так в файле? Что сказать той стороне, чтобы поправили?
1 Kuzmich123
 
23.03.18
12:26
А чего средствами платформы не читаешь?
2 Cool_Profi
 
23.03.18
12:32
(1)
табдок = Новый ТабличныйДокумент;
табдок.Прочитать("C:\Users\cd\AppData\Local\Temp\v8_7537_12b.xlsx");
табДок.Показать();


Ошибка при вызове метода контекста (Прочитать): Ошибка при выполнении файловой операции


У меня 8.2.19
3 Адинэснег
 
23.03.18
12:32
а чо так можно? оО
(1)(2)
4 Адинэснег
 
23.03.18
12:34
Описание:

Считывает табличный документ из файла.
Позволяет считывать табличный документ из файла табличного документа Microsoft Excel 97 - 2010 ( *.xls и *.xlsx) или электронной таблицы OpenOffice Calc ( *.ods).

ого, как это я мимо прошел?
5 VitShvets
 
23.03.18
12:44
(0) Могу предположить, там "xls", но файл с расширением "xlsx". Самому Екселю пофиг, он смотрит на содержимое, а вот адошным драйверам не нравится.
6 Cool_Profi
 
23.03.18
12:45
(5) В таком случае ексель жалуется. Тут же жалоб нет.
И да, смотрел внутрь - там зип с xml
7 karabas11
 
23.03.18
12:49
(1) Есть проблемы у этого способа. Он точно также не все эксели понимает.
Платформа 8.3.10 , пробую читать некий эксель файл от внешнего контрагента. Читаю ТабДок.Прочитать() - ноль информации в результате. Неверно определяет количество листов, неверно определяет содержимое.
Стоит открыть файл в экселе и пересохранить его, так сразу же 1с нормально начинает работать и корректно читать файлы эксель.

Очевидно есть зависимость от программы, которая генерирует эксель файл.
8 VitShvets
 
23.03.18
12:58
(6) Смотря как настроить безопасность. У меня вот не жалуется. Но вообще странно, видимо файлы создают чем-то ооочень специализированным. А COM-объектами Excel или LibreOffice если читать? У Микрософта раньше была бесплатная утилита Excel-reader или как-то так.
9 бомболюк
 
23.03.18
13:00
Файл *.xlsx, созданный 1С, драйвер Microsoft Access Database Engine(Microsoft.ACE.OLEDB.12.0) не читает. Говорит, что  External table is not in the expected format.
10 Cool_Profi
 
23.03.18
13:01
(8) У меня жалуется. Уже проверил. Вот разработчики говорят, что какую-то библиотеку используют, на той стороне вебятина
Ком использовать не хочу, на сервер тянуть офис не стоит, хотя если вообще вариантов не будет - придётся пойти таким путём.
11 Cool_Profi
 
23.03.18
13:02
(9) вот именно
12 Cool_Profi
 
23.03.18
13:04
Вот такой они делают OpenXMLExcel.SLExcelUtility
Программист всегда исправляет последнюю ошибку.