Ошибка при импорте файла excel

0 / 0 / 0

Регистрация: 01.07.2018

Сообщений: 15

1

Access

Ошибка при импорте файлов эксель

17.07.2019, 14:01. Показов 1188. Ответов 3


Студворк — интернет-сервис помощи студентам

Уважаемые форумчане,

Возникает ошибка при импорте данных из экселей в таблицу Аксес. Использую VBA так как файлов очень много и данных тоже.
Через форму прожимаю макрокнопку и выходит ошибка :

«The microsoft access database engine could not find the object ‘tmp17072019103744$A:X’. Make sure the object exists and that you spell its name and the path name correctly»

Кто сталкивался, подскажите, пожалуйста, кто как лечил. Что за объект он имеет ввиду?!

гугл перевод

«Ядру базы данных Microsoft Access не удалось найти объект« tmp17072019103744 $ A: X ». Убедитесь, что объект существует и что вы правильно написали его имя и путь»

Миниатюры

Ошибка при импорте файлов эксель
 



0



chernam

0 / 0 / 0

Регистрация: 01.07.2018

Сообщений: 15

17.07.2019, 15:24

 [ТС]

2

Дебагер ругается на строку DoCmd.TransferSpreadsheet acImport, , «tbl», wb.FullName, True, Range:=copyRange

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
Private Sub Êíîïêà0_Click()
    Dim fDialog As FileDialog, result As Integer
    Dim it As Variant
    Dim xl As Excel.Application
    Dim wb As Excel.Workbook
    Dim ws As Excel.Worksheet
    Dim wsTmp As Excel.Worksheet
    Dim lColumn As Integer
    Dim copyRange As String
    Dim i As Integer
    Dim colName As String
    Dim wbName As String
    Dim sStatusText As Variant
    
    Set fDialog = Application.FileDialog(msoFileDialogFilePicker)
    
    fDialog.AllowMultiSelect = True
    
    fDialog.Title = "Select a file"
    fDialog.InitialFileName = CurrentProject.Path
    fDialog.Filters.Clear
    fDialog.Filters.Add "Excel files with macro", "*.xlsm"
    fDialog.Filters.Add "Excel files", "*.xlsx"
    
    If fDialog.Show = -1 Then
        
        For Each it In fDialog.SelectedItems
            sStatusText = SysCmd(acSysCmdSetStatus, "Îáðàáàòûâàåòñÿ ôàéë " & it)
            Set xl = CreateObject("Excel.Application")
            ' xl.Visible = True ' Show Excel
            Set wb = xl.Workbooks.Open(it)
            wbName = wb.FullName
            If IsSheetExists("PTPP_VS_VTPP", wb) Then
                Set ws = wb.Sheets("PTPP_VS_VTPP")
                ws.Copy After:=wb.Sheets(wb.Sheets.Count)
                Set wsTmp = wb.Sheets(wb.Sheets.Count)
                With wsTmp
                    .Name = "tmp" & Format(Now(), "ddmmyyyyHHMMSS")
                    lColumn = .Cells(1, .Columns.Count).End(xlToLeft).Column
                    For i = lColumn To 1 Step -1
                        colName = Trim(.Cells(1, i).Value)
                        If Not IsCaptionForHandle(colName) Then
                            .Columns(i).EntireColumn.Delete
                        End If
                    Next i
                    lColumn = .Cells(1, .Columns.Count).End(xlToLeft).Column
                    If lColumn <> 24 Then
                        MsgBox "Îøèáêà êîëè÷åñòâà ñòîëáöîâ. Íàéäåíî " & lColumn & " ñ 24", vbCritical + vbOKOnly, "îøèáêà"
                        
                        wb.Close SaveChanges:=False
                        xl.Quit
                        Set xl = Nothing
                        Exit Sub
                    End If
                    If (InStr(wsTmp.Name, " ") > 0) Then
                        copyRange = "'" & wsTmp.Name & "'"
                    Else
                        copyRange = wsTmp.Name
                    End If
                    copyRange = copyRange & "!A:" & Col_Letter(.Cells(1, lColumn))
                    
                    
                    DropTemporaryTable
                     
                   [COLOR="Yellow"] DoCmd.TransferSpreadsheet acImport, , "tbl", wb.FullName, True, Range:=copyRange[/COLOR]
                    DoCmd.SetWarnings False
                    DoCmd.RunSQL InsertStatement
                    DoCmd.SetWarnings True
                    
                    DropTemporaryTable
                    
                End With
            End If
            wb.Close SaveChanges:=False
            xl.Quit
            Set xl = Nothing
            Sleep (3000)
            
        Next it
        sStatusText = SysCmd(acSysCmdSetStatus, " ")
        MsgBox "Äàííûå èìïîðòèðîâàíû", vbInformation + vbOKOnly, "import"
        Exit Sub
        End If
 
    
End Sub



0



11489 / 3776 / 678

Регистрация: 13.02.2009

Сообщений: 11,163

17.07.2019, 15:26

3

Переводчиком не пробовали?

Убедитесь, что объект существует, и что вы правильно написали его имя и путь



0



0 / 0 / 0

Регистрация: 01.07.2018

Сообщений: 15

17.07.2019, 16:16

 [ТС]

4

Цитата
Сообщение от Alex77755
Посмотреть сообщение

Переводчиком не пробовали?

Спасибо, на английском я свободно и без переводчика, но от этого не легче.

Все исходные и конечные пути и наименования сверял уже, к тому же код работал.
Из последних изменений в коде это добавление двух новых полей в таблицу аксесс — «Договор» и «Зона ответственности»

Добавлено через 14 минут
Разобрался сам, почемуто начал ругаться на название притягиваемого эксльфайла

Добавлено через 4 минуты
еще и запятую забыл коде)



0



I have a 2010 Excel file with a sheet that spans 34864 rows and 1387 columns. I’m trying to import it into Access 2010 with the import wizard, but when I select that sheet, Access goes unresponsive, and after several seconds gives me a

«Unexpected error from external database driver (1)»

Is this due to the size of the sheet or is there something in the cells that stops it from working. Other sheets from the same file import with no problem.

Dyrandz Famador's user avatar

asked May 2, 2012 at 21:20

user1251858's user avatar

2

You may experience this error after installing security patch KB4041681. See this MSDN entry.
In my case, replacing Microsoft.Jet.OLEDB.4.0 provider with Microsoft.ACE.OLEDB.12.0 helped.

Adil B's user avatar

Adil B

14.7k11 gold badges60 silver badges78 bronze badges

answered Oct 25, 2017 at 12:41

BusinessAlchemist's user avatar

0

I just experienced this problem too and found a very simple, easy solution. I noticed that my spreadsheet had a custom name so I decided to see if that was causing the problem. I changed it to the default name of «Sheet1» and, sure enough, it worked!!

answered Dec 5, 2014 at 17:19

RHiggins's user avatar

Download and install the Microsoft Access Database Engine 2010 Redistributable, and then modify the DB connection strings in Microsoft Excel to use ACE as a provider.

Change (example):

Provider=Microsoft.Jet.OLEDB.4.0

to:

Provider=Microsoft.ACE.OLEDB.12.0.

Microsoft is working on a resolution and will provide an update in an upcoming release.

Axel's user avatar

Axel

3,33111 gold badges35 silver badges58 bronze badges

answered Oct 22, 2017 at 18:59

akshay saravanan's user avatar

1

Use this

OleDbConnection conObj = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\a.XLS;Extended Properties=Excel 8.0;")

instead of this

OleDbConnection conObj = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\a.XLS;Extended Properties=Excel 8.0;")

Marian Nasry's user avatar

answered Oct 25, 2017 at 8:02

alexey's user avatar

alexeyalexey

7831 gold badge7 silver badges19 bronze badges

Save your Excel sheet to a ‘Comma delimited’ .CSV file, and then upload it as Text File. For me, this works fine.

The problem is that in .xls(x) all kind of lay-out issues are present. Converting it into .CSV removes all lay-out related mark up and converts in into ‘raw’ data.

all the best!

answered Dec 29, 2015 at 8:45

Tobias's user avatar

Along the lines of RHiggins answer:

In my case Jet OleDb.4.0 threw this error (oledbconnection.open()) because the name of a worksheet in a workbook (.xls) was too long.

answered May 17, 2016 at 16:28

jb_'s user avatar

A solution that has worked for me when tackling this issue is to have the Excel File where the Import / Export is being executed open when the Import & Export is happening.

The issue appears to be caused by the Patch preventing data transaction from occurring between CLOSED .xls files and other external database applications. Having the excel file open addresses this issue.

Some sample code examples below to highlight what works and what doesn’t with VBA:

FAILS

wbTarget.SaveAs strFilename, xlExcel8
wbTarget.Close    
ExportSheetToDB strFilename, strSheetName, "tblTemp"

WORKS

wbTarget.SaveAs strFilename, xlExcel8
ExportSheetToDB strFilename, strSheetName, "tblTemp"
wbTarget.Close

answered Nov 3, 2017 at 22:50

user2627727's user avatar

There seems to be a bug between Excel and Access. In some instances, I have to open the Excel file, click save, and then close the file. Then I can import it without error into Access.

I have yet to find a work around for this for VBA automation.

Jeremy Caney's user avatar

Jeremy Caney

7,13271 gold badges48 silver badges77 bronze badges

answered Sep 13, 2021 at 19:53

PorchMonkey's user avatar

In my case the spreadsheet was linked to another spreadsheet. I was importing a subset of the original sheet. I created a new sheet and copied the data column by column to notepad and then to the new sheet removing the links.
There was something in the links which was causing the problem.
BTW: it was this one set of data since I’ve done this import sequence from this one spreadsheet to this database more than 50 times. Halving the data worked for the first (larger) half of the data, but not for the second.

answered Apr 20, 2015 at 15:57

Dave's user avatar

DaveDave

1,23413 silver badges24 bronze badges

hi I am also facing this error when import .xlsb file. After that i copied the contents to another xlsx file then import this xlsx file.

answered Apr 5, 2016 at 5:02

Singaravelan's user avatar

SingaravelanSingaravelan

8093 gold badges19 silver badges32 bronze badges

I was getting this error when importing from a XLSB file, save the file as XLSX file and then import, should work

answered Feb 14, 2017 at 11:21

bharat1010's user avatar

bharat1010bharat1010

351 silver badge6 bronze badges

Another issue that is discovered is if the excel file is saved as a binary excel worksheet just resave it as an excel workbook and it loaded fine.

answered Feb 15, 2017 at 16:04

Bob's user avatar

I had the exact same error.
The spreadsheet was created from another software (SAP). Since it was not created by Office, Excel was not able to read it (!?!).
I have to open them in Excel, save it, and then load it in Access and it works!
As a worst case scenario, let’s say you have dozens of files, you could just open and close them by VBA code before import.

answered Mar 10, 2017 at 20:58

Séb Cô's user avatar

Séb CôSéb Cô

891 silver badge8 bronze badges

Solved for Windows 7:

Uninstall Security Update KB4041681 and KB4041678 both(Related to Excel and Jet/ACE provider)

rene's user avatar

rene

41.5k78 gold badges114 silver badges152 bronze badges

answered Oct 31, 2017 at 9:39

Diksha's user avatar

In my case (I has the same error) the problem was that I had the Access DB stored on a network drive which ran out of space (not enough free space for the import to finish). I freed up space and compacted the DB; the error didn’t appear again.

answered Apr 27, 2018 at 8:31

Maciej Lipinski's user avatar

I had same issue, after getting a security update in Windows7 this error occurred. We have too many excel files to perform an open/close operation so I decided to try other ways.

  1. Return a restore point when Access worked fine: It did not work in my case. The only change in software configuration is a security update and it seems security update still causes problem.

  2. Reducing rows, columns etc: It did not work for me; first file that access tried to reach had 10k rows, reducing this rows to 3 was not the solution.

  3. Trying to modify connection string: It did not work for me, it is not very reasonable as well; connection has been working for years, suddenly why would it stop? In some cases it does but not this time.

  4. Uninstalling most recent security update worked for in my case. Here is the uninstalled security update.

Screen shot of uninstalled security update

Good luck with solving.

Jeremy Caney's user avatar

Jeremy Caney

7,13271 gold badges48 silver badges77 bronze badges

answered Oct 31, 2017 at 6:40

Tuncermuncer's user avatar

I encountered this error when I imported a large XLSX file. The solution is to open the XLSX file by Excel first. Then start Access import from External Data.

answered Apr 26 at 14:56

Shangwu's user avatar

ShangwuShangwu

1,45012 silver badges12 bronze badges

CSV является стандартом де-факто для связи между собой разнородных систем, для передачи и обработки объемных данных с «жесткой», табличной структурой. Во многих скриптовых языках программирования есть встроенные средства разбора и генерации, он хорошо понятен как программистам, так и рядовым пользователям, а проблемы с самими данными в нем хорошо обнаруживаются, как говорится, на глаз.

История этого формата насчитывает не менее 30 лет. Но даже сейчас, в эпоху повального использования XML, для выгрузки и загрузки больших объемов данных по-прежнему используют CSV. И, несмотря на то, что сам формат довольно неплохо описан в RFC, каждый его понимает по-своему.

В этой статье я попробую обобщить существующие знания об этом формате, указать на типичные ошибки, а также проиллюстрировать описанные проблемы на примере кривой реализации импорта-экспорта в Microsoft Office 2007. Также покажу, как обходить эти проблемы (в т.ч. автоматическое преобразование типов Excel-ом в DATETIME и NUMBER) при открытии .csv.

Начнем с того, что форматом CSV на самом деле называют три разных текстовых формата, отличающихся символами-разделителями: собственно сам CSV (comma-separated values — значения, разделенные запятыми), TSV (tab-separated values — значения, разделенные табуляциями) и SCSV (semicolon separated values — значения, разделенные точкой с запятой). В жизни все три могут называться одним CSV, символ-разделитель в лучшем случае выбирается при экспорте или импорте, а чаще его просто «зашивают» внутрь кода. Это создает массу проблем в попытке разобраться.

Как иллюстрацию возьмем казалось бы тривиальную задачу: импортировать в Microsoft Outlook данные из таблицы в Microsoft Excel.

В Microsoft Excel есть средства экспорта в CSV, а в Microsoft Outlook — соответствующие средства импорта. Что могло быть проще — сделал файлик, «скормил» почтовой программе и — дело сделано? Как бы не так.

Создадим в Excel тестовую табличку:

Текстовая табличка

… и попробуем экспортировать ее в три текстовых формата:

«Текст Unicode» Кодировка — UTF-16, разделители — табуляция, переводы строк — 0×0D, 0×0A, объем файла — 222 байт
«CSV (разделители — запятые)» Кодировка — Windows-1251, разделители — точка с запятой (не запятая!), во второй строке значение телефонов не взято в кавычки, несмотря на запятую, зато взято в кавычки значение «01;02», что правильно. Переводы строк — 0×0D, 0×0A. Объем файла — 110 байт
«Текстовые файлы (с разделителями табуляции)» Кодировка — Windows-1251, разделители — табуляция, переводы строк — 0×0D, 0×0A. Значение «01;02» помещено в кавычки (без особой нужды). Объем файла — 110 байт

Какой вывод мы делаем из этого?.. То, что здесь Microsoft называет «CSV (разделители — запятые)», на самом деле является форматом с разделителями «точка с запятой». Формат у Microsoft — строго Windows-1251. Поэтому, если у вас в Excel есть Unicode-символы, они на выходе в CSV отобразятся в вопросительные знаки. Также то, что переводами строк является всегда пара символов, то, что Microsoft тупо берет в кавычки все, где видит точку с запятой. Также то, что если у вас нет Unicode-символов вообще, то можно сэкономить на объеме файла. Также то, что Unicode поддерживается только UTF-16, а не UTF-8, что было бы сильно логичнее.

Теперь посмотрим, как на это смотрит Outlook. Попробуем импортировать эти файлы из него, указав такие же источники данных. Outlook 2007: Файл -> Импорт и экспорт… -> Импорт из другой программы или файла. Далее выбираем формат данных: «Значения, разделенные запятыми (Windows)» и «Значения, разделенные табуляцией (Windows)».

«Значения, разделенные табуляцией(Windows)» Скармливаем аутлуку файл tsv, с разделенными табуляцией значениями и!.. — чтобы вы думали?.. Outlook склеивает поля и табуляцию не замечает. Заменяем в файле табуляцию на запятые и, как видим, поля уже разбирает, молодец.
«Значения, разделенные запятыми (Windows)» А вот аутлук как раз понимает все верно. Comma — это запятая. Поэтому ожидает в качестве разделителя запятую. А у нас после экселя — точка с запятой. В итоге аутлук распознает все неверно.

Два майкрософтовских продукта не понимают друг друга, у них напрочь отсутствует возможность передать через текстовый файл структурированные данные. Для того, чтобы все заработало, требуются «пляски с бубном» программиста.

Мы помним, что Microsoft Excel умеет работать с текстовыми файлами, импортировать данные из CSV, но в версии 2007 он делает это очень странно. Например, если просто открыть файл через меню, то он откроется без какого-либо распознавания формата, просто как текстовый файл, целиком помещенный в первую колонку. В случае, если сделать дабл-клик на CSV, Excel получает другую команду и импортирует CSV как надо, не задавая лишних вопросов. Третий вариант — вставка файла на текущий лист. В этом интерфейсе можно настраивать разделители, сразу же смотреть, что получилось. Но одно но: работает это плохо. Например, Excel при этом не понимает закавыченных переводов строк внутри полей.

Более того, одна и та же функция сохранения в CSV, вызванная через интерфейс и через макрос, работает по-разному. Вариант с макросом не смотрит в региональные настройки вообще.

Стандарта CSV как такового, к сожалению, нет, но, между тем, существует т.н. memo. Это RFC 4180

2005-го

года, в котором описано все довольно толково. За неимением ничего большего, правильно придерживаться хотя бы RFC. Но для совместимости с Excel следует учесть его собенности.

Вот краткая выжимка рекомендаций RFC 4180 и мои комментарии в квадратных скобках:

  • между строками — перевод строки CRLF [на мой взгляд, им не стоило ограничивать двумя байтами, т.е. как CRLF (0×0D, 0×0A), так и CR 0×0D]
  • разделители — запятые, в конце строки не должно быть запятой,
  • в последней строке CRLF не обязателен,
  • первая строка может быть строкой заголовка (никак не помечается при этом)
  • пробелы, окружающие запятую-разделитель, игнорируются.
  • если значение содержит в себе CRLF, CR, LF (символы-разделители строк), двойную кавычку или запятую (символ-разделитель полей), то заключение значения в кавычки обязательно. В противном случае — допустимо.
  • т.е. допустимы переводы строк внутри поля. Но такие значения полей должны быть обязательно закавычены,
  • если внутри закавыченной части встречаются двойные кавычки, то используется специфический квотинг кавычек в CSV — их дублирование.

Вот в нотации ABNF описание формата:

 file = [header CRLF] record *(CRLF record) [CRLF]
   header = name *(COMMA name)
   record = field *(COMMA field)
   name = field
   field = (escaped / non-escaped)
   escaped = DQUOTE *(TEXTDATA / COMMA / CR / LF / 2DQUOTE) DQUOTE
   non-escaped = *TEXTDATA
   COMMA = %x2C
   DQUOTE =  %x22
   LF = %x0A
   CRLF = CR LF
   TEXTDATA =  %x20-21 / %x23-2B / %x2D-7E
 

Также при реализации формата нужно помнить, что поскольку здесь нет указателей на число и тип колонок, поскольку нет требования обязательно размещать заголовок, здесь есть условности, о которых необходимо не забывать:

  • строковое значение из цифр, не заключенное в кавычки может быть воспринято программой как числовое, из-за чего может быть потеряна информация, например, лидирующие нули,
  • количество значений в каждой строке может отличаться и необходимо правильно обрабатывать эту ситуацию. В одних ситуациях нужно предупредить пользователя, в других — создавать дополнительные колонки и заполнять их пустыми значениями. Можно определиться, что количество колонок задается заголовком, а можно добавлять их динамически, по мере импорта CSV,
  • Квотить кавычки через «слэш» не по стандарту, делать так не надо.
  • Поскольку типизации полей нет, нет и требования к ним. Разделители целой и дробной частей в разных странах разные, и это приводит к тому, что один и тот же CSV, сгенрированный приложением, в одном экселе «понимается», в другом — нет. Потому что Microsoft Office ориентируется на региональные настройки Windows, а там может быть что угодно. В России там указано, что разделитель — запятая,
  • Если CSV открывать не через меню «Данные», а напрямую, то Excel лишних вопросов не задает, и делает как ему кажется правильным. Например, поле со значением 1.24 он понимает по умолчанию как «24 января»
  • Эксель убивает ведующие нули и приводит типы даже тогда, когда значение указано в кавычках. Делать так не надо, это ошибка. Но чтобы обойти эту проблему экселя, можно сделать небольшой «хак» — значение начать со знака «равно», после чего поставить в кавычках то, что необходимо передать без изменения формата.
  • У экселя есть спецсимвол «равно», который в CSV рассматривается как идентификатор формулы. То есть, если в CSV встретится =2+3, он сложит два и три и результат впишет в ячейку. По стандарту он это делать не должен.

Пример валидного CSV, который можно использовать для тестов:

Фамилия, Имя, Адрес, Город/штат, индекс, просто строка
Иванов,Иван, Ленина 20, Москва, 08075, "1/3"
Tyler, John,110 terrace, PA,20121, "1.24"
"Петров 
""Кул""", Петя,120 Hambling St., NJ,08075, "1,24"
Смирнов,Вася,"7452 Street ""Near the Square"" road", York, 91234, "3-01"
,Миша,,Ленинград, 00123, "03-01"
"Джон ""Черная голова"", Клод",Рок,"", Маями бич,00111, "0000"
Сергей,,

точно такой же SCSV:

Фамилия; Имя; Адрес;  Город/штат; индекс; просто строка
Иванов;Иван; Ленина 20; Москва; 08075;"1/3"
Tyler; John;110 terrace; PA; 20121;"1.24"
"Петров 
""Кул"""; Петя;120 Hambling St.; NJ;08075;"1,24"
Смирнов;Вася;"7452 Street ""Near the Square"" road"; York; 91234;"3-01"
;Миша;;Ленинград; 00123;"03-01"
"Джон ""Черная голова""; Клод";Рок;""; Маями бич;00111; "0000"
Сергей;;

Первый файлик, который реально COMMA-SEPARATED, будучи сохраненным в .csv, Excel-ом не воспринимается вообще.

Второй файлик, который по логике SCSV, экселом воспринимается и выходит вот что:

Ошибки Excel-я при импорте:

  1. Учлись пробелы, окружающие разделители
  2. Последний столбец вообще толком не распознался, несмотря на то, что данные в кавычках. Исключение составляет строка с «Петровым» — там корректно распозналось 1,24.
  3. В поле индекс Excel «опустил» ведущие нули.
  4. в самом правом поле последней строки пробелы перед кавычками перестали указывать на спецсимвол

Если же воспользоваться функционалом импорта (Данные -> Из файла) и обозвать при импорте все поля текстовыми, то будет следующая картина:

С приведением типов сработало, но зато теперь не обрабатываются нормально переводы строк и осталась проблема с ведущими нулями, кавычками и лишними пробелами. Да и пользователям так открывать CSV крайне неудобно.

Есть эффективный способ, как заставить Excel не приводить типы, когда это нам не нужно. Но это будет CSV «специально для Excel». Делается это помещением знака «=» перед кавычками везде, где потенциально может возникнуть проблема с типами. Заодно убираем лишние пробелы.

Фамилия;Имя;Адрес;Город/штат;индекс;просто строка
Иванов;Иван;Ленина 20;Москва;="08075";="1/3"
Tyler; John;110 terrace;PA;="20121";="1.24"
"Петров 
""Кул""";Петя;120 Hambling St.;NJ;="08075";="1,24"
Смирнов;Вася;"7452 Street ""Near the Square"" road";York;="91234";="3-01"
;Миша;;Ленинград;="00123";="03-01"
"Джон ""Черная голова"";Клод";Рок;"";Маями бич;="00111";="0000"
Сергей;;

И вот что случаеся, если мы открываем этот файлик в экселе:

Резюмирую.

Чтобы сгенерировать такой CSV, которым можно было бы пользоваться, пользователю нужно дать возможность сделать следующие настройки перед экспортом:

  1. выбрать кодировку. Как правило, важно UTF-8, UTF-16, Windows-1251, KOI8-R. Чаще всего, других вариантов нет. Одна из них должна идти по умолчанию. В случае, если данные содержат символы, не имеющие аналогов в целевой кодировке, нужно предупреждать пользователя, что данные будут битые;
  2. выбрать разделитель между полями. Варианты — табуляция, запятая, точка с запятой. По умолчанию — точка с запятой. Не забыть, что если разделитель вводится в тексте, то будет очень непросто ввести туда табуляцию, это еще и непечатный символ;
  3. выбрать разделитель между строками (CRLF 0×0D 0×0A или CR 0×0D);
  4. выбрать разделитель целой и дробной части для числовых данных (точка или запятая).
  5. выбрать, выводить ли строку заголовка;
  6. выбрать, каким образом осуществлять квотинг спецсимволов (особенно переводов строк и кавычек). В принципе, можно отступиться от стандарта и квотировать их как n и «, но нужно в этом случае не забыть квотировать сами n, если они встретятся и не забыть сделать это опцией при экспорте-импорте. Но совместимость пойдет лесом, потому что любой RFC-стандартный парсер конструкцию …,»abc«»,… посчитает за ошибку;
  7. совсем в идеале — поставить галочку «для Excel» и учитывать там те нестандартности, которые внесла Майкрософт. К примеру, заменять значения числовых полей, «похожих на дату», на конструкцию =»<значение поля>«.
  8. определиться, нужно ли оставлять «хвост» из пустых разделителей, если он образуется. Например, из 20 полей только первое содержит данные, а остальные пустые. В итоге, в строке можно либо ставить после первого 19 разделителей, либо не ставить. Для больших объемов данных это может спасти миллисекунды обработки и уменьшить размер файла.

Чтобы построить хороший и удобный импортер CSV, необходимо помнить о следующем:

  1. разбор файла нужно делать по лексемам в соответствии с грамматикой выше или пользоваться хорошо зарекомендовавшими себя готовыми библиотеками (Excel работает иначе, потому с импортом проблема);
  2. предоставлять пользователю возможность выбрать кодировку (топ 4 достаточно);
  3. предоставлять пользователю возможность выбрать разделитель между полями (запятая, табуляция, точка с запятой достаточно);
  4. предоставлять пользователю возможность выбрать разделитель между строками, но кроме вариантов CR и CRLF нужно предусмотреть «CR или CRLF». Это связано с тем, что, например, Excel при экспорте таблицы с переводами строк внутри ячеек экспортирует эти переводы строк как CR, а остальные строки разделяет CRLF. При этом при импорте файла ему все равно, CR там или CRLF;
  5. предоставлять пользователю возможность выбрать разделитель между целой и дробной частей (запятая или точка);
  6. определиться с методом разбора — сначала читаем все в память, потом обрабатываем или обрабатываем строку за строкой. В первом случае может понадобиться больше памяти, во втором случае — ошибка в середине вызовет только частичный импорт, что может вызвать проблемы. Предпочительнее первый вариант.

Рауф Алиев,
заместитель технического директора Mail.Ru Group

Ошибки импорта из Excel и их решения.

Раздел Импорт из Excel – предназначен для загрузки текстовых данных о товарах и услугах компании в формате XLS, XLSX, CSV.

Это может быть файл созданный по нашему шаблону для импорта, или же, к примеру, файл экспортированый с другого сайта в формате XLS, XLSX, CSV.

Рассмотрим ошибки в файле импорта, которые чаще всего допускают пользователи и решения для корректировки.

Сообщение об ошибке » В выбранном файле не все обязательные поля или файл поврежден». Как это решить?

1. Возможно, при создании файла импорта, используя наш шаблон, были допущены ошибки. В шаблоне импорта первая строка файла это подсказки, а в файле импорта первой строкой должны идти названия колонок. Нужно удалить первую строку с подсказками перед сохранением заполненного файла:

2. Ошибка возникает при попытке загрузить файл не в формате xls, xlsx или csv при импорте из Excel. Измените расширение импортируемого файла.

Если файл создан в результате экспорта с другого сайта проверьте его на соответствие с нашим шаблоном и наличием обязательных полей/колонок в файле Excel. Посмотреть правила составления файла Excel можно в Кабинете компании — Товары и УслугиИмпорт из Excel

3. Формат одной или нескольких ячеек выбран не верно. Например, в колонке ЦЕНА значение должно быть числовое и целое:

4. Если файл импорта был создан не из нашего шаблона тогда ошибка может быть из-за отсутствия или неверного заполнения поля колонок Адрес_подраздела и Идентификатор_подраздела. Если файл импорта создан из шаблона, импорт происходит даже если эти поля пустые.

После импорта отсутствуют фото к товару , хотя он были в файле импорта. Почему?

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

1. В файле импорта не указаны URL для изображений. Для импорта из Excel это колонка Ссылка_изображения. Ссылки должны быть разделены запятыми с пробелами:

Проверьте наличие ссылки в строке товара в колонке для фото, возможно там пустая строка или ссылка картинки указана с ошибкой, не полностью.

2. Также нужно проверить доступность ссылки, если это ссылка на картинку с сайта — скопируйте её и вставьте в строку браузера. Перейдите по адресу ссылки — если картинка отображается — адрес ссылки корректный.

Импорт прошел и у всех товаров теперь статус «Наличие не известно». Почему?

Для обозначения статуса наличия в колонке Наличие применяется:

Если оставить поле наличия пустым — статус вашего товара станет Наличие не известно.

Не отобразилась скидка после импорта. В чем причина?

Колонка Скидка должна иметь процентное или числовое значение, если в этой колонке (или ячейке) значение было указано не % или число — скидка не отобразится. На примере изображения ниже преобразуйте ячейки колонки Скидка в нужный формат:

В файле импорта были заполнены характеристики, но в карточке товара они оказались в Дополнительном. Почему?

На сайте компании и на портале Основные характеристики могут выступать фильтрами при поиске, а Дополнительные характеристики просто отображаются в описании к товару списком.

Если были указаны характеристики, но после импорта они отражаются в Дополнительных, значит для Рубрики, к которой относится товар, нет такой характеристики в нашей базе и система перенесла эти атрибуты в дополнительные.

Знайка, самый умный эксперт в Цветочном городе

Мнение эксперта

Знайка, самый умный эксперт в Цветочном городе

Если у вас есть вопросы, задавайте их мне!

Задать вопрос эксперту

Знание языка запросов Xpath для использования функции не обязательно, можно воспользоваться опцией браузера копировать Xpath. Если же вы хотите что-то уточнить, я с радостью помогу!

Облачные сервисы не требуют установки на ПК. Все данные хранятся на серверах разработчиков, вы скачиваете только результат парсинга. Доступ к программному обеспечению осуществляется через веб-интерфейс или по API.
Чистка реестра Windows

Что значит ошибка перенос в excel

Добавить список url можно вручную, XLSX-файлом или ссылкой на XML-карту сайта. Отчеты выгружаются в форматах HTML и XLSX. Первые 500 запросов — бесплатно. Все нюансы работы с инструментом мы описали в гайде.

Ошибка разбора XML или XML Parsing Error в RSS-ленте, решения проблемы

Открыв, RSS ленту своего сайта видишь, что ленты нет, а браузер сообщает об ошибке. Как мне удается вернуть «на место», «отвалившуюся» RSS ленту я и расскажу дальше.

Примечание: Хочу поправиться и замечу, что неисправности фида не валятся с неба. Скорее всего, это результат установки нового плагина или ваше изменение, некоторых файлов в шаблоне. Так как, для формирования фида используется язык разметки XML, который имеет строгие правила синтаксиса, то любое изменение в файлах, которые не влияют на работу сайта, могут «отстегнуть» RSS.

Для исправления ошибки, я обычно делаю следующие шаги, причем исправление фида может произойти на любом шаге.

Примечание: Вообще эта синтаксическая ошибка называется ошибка разбора XML или XML Parsing Error. В разных браузерах она показывается по-разному. Например, в Chrome:

Поиск – Ошибка разбора XML или XML Parsing Error в RSS-ленте

Предположительно, ошибка разбора появляется из-за пробельных символов (пробел, новая строка, табуляция) появившихся в коде WordPress перед декларацией XML.

Для начала, попытаемся устранить ненужные пробелы в коде

Не помогло, или не хочется лазить по коду, воспользуйтесь плагином: Fix RSS Feed WordPress. Хоть и плагин не протестирован на версии 3.8, вполне может помочь в восстановлении ленты RSS.

Данный плагин не обновлялся 2 года. Скорее всего, он уже не поддерживается и может быть несовместим с текущими версиями WordPress.

Плагин установите на сайт любым из способов установки плагинов. После активации плагина, откройте его и запустите процесс исправления. Если проблема неработающего канала RSS в лишних пробелах, этот плагин должен помочь.

Исправить Rss поток WordPress.Как сделать сайт WP WordPress Fix Rss Feed ‹ WordPress.Как сделать сайт WP — WordPress

Если плагин Fix RSS Feed WordPress не помог, возможен конфликт одного из плагинов. Попробуйте, отключать в Консоли → Плагины → Установленные, последовательно каждый активный плагин, проверяя работоспособность ленты RSS.

Ошибки будут подсвечены желтым цветом. Ошибки связанные не с синтаксисом файлов, нужно решать для каждого конкретного случая отдельно.

Похожие посты:

2 комментария к “Ошибка разбора XML или XML Parsing Error в RSS-ленте, решения проблемы”

Это ведь уже не про RSS? по крайней мере убирать пробелы не помогло

По вопросу я не понял, после чего была такая ошибка.
Вероятно вы что-то импортируйте (контент, товары) при помощи плагина импорта.
Если плагин импорта тестирован на вашей версии, я бы сначала отключил другие плагины сайта и повторил импорт.
Если бы это не помогло, написал в suport хостинга.

Добавить комментарий Отменить ответ

Знайка, самый умный эксперт в Цветочном городе

Мнение эксперта

Знайка, самый умный эксперт в Цветочном городе

Если у вас есть вопросы, задавайте их мне!

Задать вопрос эксперту

Предположительно, ошибка разбора появляется из-за пробельных символов пробел, новая строка, табуляция появившихся в коде WordPress перед декларацией XML. Если же вы хотите что-то уточнить, я с радостью помогу!

Я продолжаю получать сообщение об ошибке. Это ошибка
Не уверен, что это подходящее место для этого или нет, если нет, я извиняюсь. Изначально продолжал подниматься, когда я был на ebay, теперь случается случайным образом.

Исправить ошибку Parser конфигурации

Бесплатная версия ограничена 500-ми url. В платной (лицензию можно купить на год) количество страниц для парсинга не ограничено, и она имеет гораздо больше возможностей. Среди них — парсинг цен, названий и описаний товаров с любого сайта. Как это сделать, мы подробно описали в гайде.

Если вы ранее создали карту XML,вы можете использовать ее для импорта данных XML в ячейки, которые соеряду, но существуют также несколько способов и команд импорта данных XML без карты XML.

При наличии карты XML сделайте следующее для импорта данных XML в сопоставленные ячейки:

  1. В карте XML выберите одну из сопоставленных ячеек.

  2. На вкладке Разработчик нажмите кнопку Импорт.

    Если вкладка Разработчик не отображается, см. раздел Отображение вкладки «Разработчик».

  3. В диалоговом окне Импорт XML найдите и выберите файл данных XML (XML-файл), который вы хотите импортировать, и нажмите кнопку Импорт.

  • Импорт файла данных XML в качестве XML-таблицы

  • Импорт нескольких файлов данных XML

  • Импорт нескольких файлов данных XML в качестве внешних данных

  • Открытие файла данных XML для импорта данных

Дополнительные сведения о проблемах см. в разделе Типичные проблемы при импорте данных XML в конце этой статьи.

Импорт файла данных XML в качестве XML-таблицы

  1. На вкладке Разработчик нажмите кнопку Импорт.

    Если вкладка Разработчик не отображается, см. раздел Отображение вкладки «Разработчик».

  2. В диалоговом окне Импорт XML найдите и выберите файл данных XML (XML-файл), который вы хотите импортировать, и нажмите кнопку Импорт.

    Если файл данных XML не ссылается ни на какую схему, Excel создает ее на основе этого файла.

  3. В диалоговом окне Импорт данных выполните одно из следующих действий:

    1. Выберите XML-таблицу на существующем компьютере, чтобы импортировать содержимое файла данных XML в XML-таблицу на вашем компьютере в указанной ячейке.

    2. Чтобы импортировать содержимое файла в XML-таблицу на новом, начиная с ячейки A1, выберите XML-таблицу на новом. Карта файла данных XML отобразится в области задач Источник XML.

  4. Если файл данных XML не ссылается ни на какую схему, Excel создает ее на основе этого файла.

  5. Чтобы контролировать поведение данных XML (например, привязку данных, форматирование и макет), нажмите кнопку Свойства ,чтобы отобразить диалоговое окно Свойства карты XML. Например, при импорте данных по умолчанию существующие данные в диапазоне будут перезаписаны, но это можно изменить.

Импорт нескольких файлов данных XML

  1. Выберите сопоставленную ячейку, чтобы импортировать несколько XML-файлов в один набор сопоставленных ячеек.

    Если вы хотите импортировать несколько XML-файлов в несколько наборов сопоставленных ячеек, щелкните любую несопоставленную ячейку листа.

  2. На вкладке Разработчик нажмите кнопку Импорт.

    Если вкладка Разработчик не отображается, см. раздел Отображение вкладки «Разработчик».

  3. В диалоговом окне Импорт XML найдите и выберите файл данных XML (XML-файл), который вы хотите импортировать.

    • Если файлы являются смежными, нажмите клавишу SHIFT, а затем щелкните первый и последний файл в списке. Все данные из XML-файлов будут импортированы и добавлены в сопоставленные ячейки.

    • Если файлы не являются смежными, нажмите клавишу CTRL, а затем щелкните все файлы списка, которые вы хотите импортировать.

  4. Нажмите кнопку Импорт.

    Если вы выбрали несколько файлов, появится диалоговое окно Импорт <>.xml файл. Выберите карту XML, соответствующую импортируемому файлу данных XML.

    Чтобы использовать одну карту для всех выделенных файлов, которые еще не были импортированы, установите флажок Использовать эту карту XML для всех выбранных файлов этой схемы.

Импорт нескольких файлов данных XML в качестве внешних данных

Если нужно импортировать несколько XML-файлов с одним пространством имен, но с разными схемами XML, вы можете воспользоваться командой Из импорта данных XML. Excel создаст уникальную карты XML для каждого импортируемого файла данных XML.

Примечание: При импорте нескольких XML-файлов, в которых не определено пространство имен, считается, что они используют одно пространство имен.

  1. Если вы используете Excel с подпиской наMicrosoft 365, щелкните Данные > Получить данные > из файла > из XML.

    Если вы используете Excel 2016 или более раннюю версию, на вкладке Данные нажмите кнопку Из других источников, а затем щелкните Из импорта данных XML.

  2. Выберите диск, папку или расположение в Интернете, где находится файл данных XML (XML-файл), который вы хотите импортировать.

  3. Выберите файл и нажмите кнопку Открыть.

  4. В диалоговом окне Импорт данных выберите один из следующих параметров:

    • В XML-таблицу в существующей книге.    Содержимое файла импортируется в новую таблицу XML на новом листе. Если файл данных XML не ссылается ни на какую схему, Excel создает ее на основе этого файла.

    • Существующий таблица    Данные XML импортируется в двумерную таблицу со строками и столбцами, где теги XML показаны как заголовки столбцов, а данные — в строках под заголовками столбцов. Первый элемент (корневой узел) используется как заголовок и отображается в указанном расположении ячейки. Остальные теги отсортировали по алфавиту во второй строке. В этом случае схема не создается и вы не можете использовать карту XML.

    • На новый лист.    Excel добавляет в книгу новый лист и автоматически помещает данные XML в его левый верхний угол. Если файл данных XML не ссылается ни на какую схему, Excel создает ее на основе этого файла.

  5. Чтобы контролировать поведение данных XML, таких как привязка, форматирование и макет, нажмите кнопку Свойства ,чтобы отобразить диалоговое окно Свойства карты XML. Например, при импорте данных по умолчанию существующие данные в соеченом диапазоне перезаписываются, но это можно изменить.

Открытие файла данных XML для импорта данных

  1. Выберите команду Файл > Открыть.

    Если вы используете Excel 2007, нажмите Microsoft Office кнопку Изображение кнопки Office >открыть.

  2. В диалоговом окне Открытие файла выберите диск, папку или веб-адрес, где расположен нужный файл.  

  3. Выберите файл и нажмите кнопку Открыть.

  4. Если появится диалоговое окно Импорт XML, открытый файл ссылается на одну или несколько таблиц стилей XSLT, поэтому можно щелкнуть один из следующих параметров:

    • Открытие файла без применения таблицы стилей    Данные XML импортируется в двумерную таблицу со строками и столбцами, где теги XML показаны как заголовки столбцов, а данные — в строках под заголовками столбцов. Первый элемент (корневой узел) используется как заголовок и отображается в указанном расположении ячейки. Остальные теги отсортировали по алфавиту во второй строке. В этом случае схема не создается и вы не можете использовать карту XML.

    • Открыть файл, применив следующую таблицу стилей (выберите одну).    Выберите таблицу стилей, которую вы хотите применить, и нажмите кнопку ОК. Данные XML будут отформатированы в соответствии с выбранным листом стилей.

      Примечание: Данные XML будут открыты в Excel в режиме «только для чтения», что позволяет предотвратить случайное сохранение первоначального исходного файла в формате книги Excel с поддержкой макросов (XLSM). В этом случае схема не создается и вы не можете использовать карту XML.

  5. Если появится диалоговое окно Открыть XML, в XML-файле не будет ссылок на таблицу стилей XSLT. Чтобы открыть файл, выберите один из следующих параметров:

    • Щелкните XML-таблица для создания XML-таблицы в новой книге.

      Содержимое файла импортируется в XML-таблицу. Если файл данных XML не ссылается ни на какую схему, Excel создает ее на основе этого файла.

    • Выберите в качестве книги, которая будет работать только для чтения.

      Данные XML импортируется в двумерную таблицу со строками и столбцами, где теги XML показаны как заголовки столбцов, а данные — в строках под заголовками столбцов. Первый элемент (корневой узел) используется как заголовок и отображается в указанном расположении ячейки. Остальные теги отсортировали по алфавиту во второй строке. В этом случае схема не создается и вы не можете использовать карту XML.

      Данные XML будут открыты в Excel в режиме «только для чтения», что позволяет предотвратить случайное сохранение первоначального исходного файла в формате книги Excel с поддержкой макросов (XLSM). В этом случае схема не создается и вы не можете использовать карту XML.

    • Щелкните Использовать область задач XML-источника.

      Карта файла данных XML отобразится в области задач Источник XML. Для сопоставления элементов схемы с листом их можно перетащить на лист.

      Если файл данных XML не ссылается ни на какую схему, Excel создает ее на основе этого файла.

Распространенные проблемы при импорте данных XML

Excel отображает диалоговое окно Ошибка импорта XML, если не может проверить данные в соответствии с картой XML. Чтобы получить дополнительные сведения об ошибке, нажмите кнопку Сведения в этом диалоговом окне. В следующей ниже таблице описаны ошибки, которые часто возникают при импорте данных.

Ошибка

Объяснение

Ошибка при проверке схемы

Когда вы выбрали в диалоговом окне Свойства карты XML параметр Проверять данные на соответствие схеме при импорте и экспорте, данные были импортированы, но не проверены на соответствие указанной карте XML.

Некоторые данные были импортированы как текст

Часть импортированных данных или все данные были преобразованы из объявленного типа в текст. Чтобы использовать эти данные в вычислениях, необходимо преобразовать их в числа или даты. Например, значение даты, преобразованное в текст, не будет работать должным образом в функции ГОД, пока вы не преобразуйте его в тип данных «Дата». Excel преобразует данные в текст в следующих случаях:

  • Данные в формате, который Excel не поддерживается.

  • Данные несовместимы с внутренним представлением типа данных XSD в Excel. Чтобы исправить эту проблему, удостоверьтесь, что данные XML соответствуют XML-схеме, проверив каждое из определений типа данных.

Ошибка разбора XML

Средству синтаксического анализа XML не удается открыть указанный XML-файл. Убедитесь, что в XML-файле отсутствуют синтаксические ошибки и XML построен правильно.

Не удается найти карту XML, соответствующую этим данным

Эта проблема может возникнуть в том случае, если для импорта выбрано несколько файлов данных XML и Excel не удается найти соответствующую карту XML для одного из них. Импортируйте схему для файла, указанного в строке заголовка этого диалогового окна, сначала следует, а затем повторно выполните импорт файла.

Не удается изменить размер XML-таблицы для включения данных

Вы пытаетесь добавить строки путем импорта или добавления данных в XML-таблицу, однако таблицу невозможно расширить. XML-таблицу можно дополнять только снизу. Например, сразу под XML-таблицей может находиться объект, такой как рисунок или даже другая таблица, который не позволяет расширить ее. Кроме того, возможно, что при расширении XML-таблицы будет превышен установленный в Excel предел по количеству строк (1 048 576). Чтобы исправить эту проблему, измените расположение таблиц и объектов на листе, чтобы XML-таблица могла дополняться снизу.

Указанный XML-файл не ссылается на схему

XML-файл, который вы пытаетесь открыть, не ссылается на схему XML. Для работы с данными XML, содержащимися в файле, Excel требуется схема, основанная на его содержимом. Если такая схема неверна или не отвечает вашим требованиям, удалите ее из книги. Затем создайте файл схемы XML и измените файл данных XML так, чтобы он ссылался на схему. Дополнительные сведения см. в статье Сопоставление XML-элементов с ячейками карты XML.

Примечание: Схему, созданную Excel, невозможно экспортировать в качестве отдельного файла данных схемы XML (XSD-файла). Хотя существуют редакторы схем XML и другие способы создания файлов схемы XML, возможно, вы не имеете к ним доступа или не знаете, как ими пользоваться.

Выполните следующие действия, чтобы удалить из книги схему, созданную Excel:

  1. На вкладке Разработчик выберите команду Источник.

    Команды XML на вкладке "Разработчик"

    Если вкладка Разработчик не отображается, см. раздел Отображение вкладки «Разработчик».

  2. В области задач Источник XML выберите пункт Карты XML.

  3. В диалоговом окне Карты XML щелкните карту XML, созданную Excel ,и нажмите кнопку Удалить.

Возникают проблемы при импорте нескольких XML-файлов, которые используют одно пространство имен, но разные схемы

При работе с несколькими файлами данных XML и несколькими схемами XML стандартным подходом является создание карты XML для каждой схемы, сопоставление нужных элементов, а затем импорт каждого из файлов данных XML в соответствующую карту XML. При использовании команды Импорт для открытия нескольких XML-файлов с одним пространством имен можно использовать только одну схему XML. Если эта команда используется для импорта нескольких XML-файлов, использующих одно пространство имен при разных схемах, можно получить непредсказуемые результаты. Например, это может привести к тому, что данные будут перезаписаны или файлы перестанут открываться.

Если нужно импортировать несколько XML-файлов с одним пространством имен, но с разными схемами XML, вы можете воспользоваться командой Из импорта данных XML (выберите Данные > Из других источников). Эта команда позволяет импортировать несколько XML-файлов с одним пространством имен и разными схемами XML. Excel создаст уникальную карты XML для каждого импортируемого файла данных XML.

Примечание: При импорте нескольких XML-файлов, в которых не определено пространство имен, считается, что они используют одно пространство имен.

Отображение вкладки «Разработчик»

Если вкладка Разработчик недоступна, выполните следующие действия, чтобы открыть ее.

  • В Excel 2013 и Excel 2010

    1. Выберите Файл > Параметры.

    2. Щелкните категорию Настроить ленту.

    3. В разделе Основные вкладки установите флажок Разработчик и нажмите кнопку ОК.

  • В Excel 2007

    1. Нажмите кнопку Microsoft Office кнопку Изображение кнопки Office>Excel параметры.

    2. Выберите категорию Основные.

    3. В разделе Основные параметры работы с Excel установите флажок Показывать вкладку «Разработчик» на ленте и нажмите кнопку ОК.

См. также

Просмотр XML в Excel

Сопоставление XML-элементов с ячейками карты XML

Экспорт данных XML

Здравствуйте. Имеется доменная сеть организации, компьютеры с ОС MS Windows 10 1903. Установлен MS Office 2016 и MS Office 2019 Standard. Имеется постоянная необходимость пересылать выгруженные из стороннего ПО по электронной
почте .xml файлы. Почтовый клиент у всех по умолчанию — Outlook. Почтовый сервер — службы gmail. 

Ситуация следующая: Пользователь получает файл .xml вложением в почтовый клиент. MS Office 2016.  Открывает его из клиента, или сохраняет себе на компьютер, с последующей попыткой открыть в Excel, получает
сообщение вида: «Файл поврежден, поэтому его нельзя открыть»

По рекомендациям из Сети, отключаю в панели безопасности Excel параметры:

— Включить защищенный просмотр для файлов из Интернета,

— Включить защищенный просмотр для файлов в потенциально небезопасных расположениях

— Включить защищенный просмотр для вложений Outlook. 

Ошибка меняется на следующую: При загрузке были обнаружены ошибки в следующих областях: Таблица. Этот файл нельзя открыть из-за наличия ошибок. Ошибки перечислены в файле: ХХХХ.log

В логе следующее: 

ОШИБКА РАЗБОРА XML:  Отсутствует завершающий тег
  Ошибка на уровне этого стека элементов или ниже:
    <ss:Workbook>
     <ss:Worksheet>
      <ss:Table>
       <ss:Row>
        <ss:Cell>
         <ss:Data>
          <ss:P5P>

А теперь самое интересное. Если файл скачать через web-интерфейс почты Google — он открывается корректно и без ошибок. Если файл приходит пользователю в .zip/.rar архиве, открывается из Outlook — корректно и без ошибок.

Я проводил сравнение параметров и содержимого файлов (через текстовый редактор) — они полностью совпадают. Атрибуты, безопасность, размер. Однако один файл, сохраненный через Outlook — не открывается, а скачанный через браузер — корректно
работает. Файлы идентичные. Из одних и тех же писем. 

В MS Office 2019 — все открывается корректно, как через Outlook, так и при сохранении через браузер.  

Пользователи — имеют права локальных администраторов. 

Что делает с .xml файлом Outlook, что приводит к невозможности его открыть и как исправить эту проблему?

Все документы XML зависят от определения того, какие поля разрешены для существования и какие значения разрешены для существования в каждом из этих полей. Они определены в каждом XML файле путем ссылки на определение типа документа ( «DTD» ) или файл XML-схемы.

Я понимаю, что Excel 2007 и более поздние версии не поддерживают DTD. Вместо этого они ожидают, что ваш XML файл будет ссылаться на XML-схему.

Итак, ваша основная проблема заключается в том, что ваш XML файл ссылается на DTD файл, и вам нужно преобразовать ваш DTD файл в файл XML-схемы (вы можете проверить это, открыв документ с помощью программы, например Notepad ++, и посмотрите на необработанную текст.)

Есть много инструментов, которые помогут вам сделать это, но, честно говоря, я пытался заставить их всех работать в течение нескольких часов и до сих пор не имеет Excel, открывающего мой XML (пробежал этот пост googling тот же код ошибки.)

Если вы просто пытаетесь открыть XML файл в одно мгновение, вы, вероятно, не захотите вложить в него столько усилий, но если я выясню быстрое и простое решение, я приду обновление.

Если вам просто нужно открыть его, вы можете скачать бесплатную программу, которая преобразует XML в CSV:

http://xmltocsv.codeplex.com/

Я попробовал, и он отлично поработал — я сразу же открыла свой файл в Excel 2013. Проблема решена на данный момент.

Конечно, точка XML заключается в том, что данные могут относиться к другим данным с контекстом, и они теряются без надлежащей схемы или файла DTD. Но если вы просто хотите, чтобы файл был открыт, это должно работать на данный момент (для тех, у кого еще нет Excel 2003, хотя я думаю, что это так же легко для вас.)

Содержание:

1.       XML – расширяемый язык разметки

2.       Устранение Ошибки разбора XML в 1С

3.       «Обход» Ошибки разбора XML в 1С   

1.    XML – расширяемый язык разметки

В данной статье речь пойдёт о причинах возникновения фатальной ошибки «Ошибка разбора XML» и способах устранения данной неполадки. Также будет дана инструкция не по устранению, но «обходу» ошибки, то есть действиям на опережение.

XML (с английского – extensible markup language – расширяемый язык разметки) – это язык разметки, который рекомендует Консорциум Всемирной паутины. Обычно язык разметки XML служит для описания документации, соответствующего типа, а также описывает действия соответствующих процессоров. Расширяемый язык разметки имеет довольно простой синтаксис, поэтому используется по всему миру, чтобы создавать и обрабатывать документацию программным способом. Он создавался именно для использования в Интернете. XML назвали именно расширяемым языком разметки, так как в нём нет фиксации разметки, которая содержится внутри документа, а именно: программист может создавать любую разметку, а ограничения будут встречаться лишь в синтаксисе.

2.    Устранение Ошибки разбора XML в 1С

«Ошибка разбора XML» возникает исключительно в тонком клиенте 1С. Также стоит отметить, что «Ошибка разбора XML» также довольна схожа с ошибкой по формату потока, которая возникает в толстом клиенте. Обычно в 1С «Ошибка разбора XML» возникает по причине наличия кэша метаданных. И если очистить кэш, то ошибка будет устранена. Выглядит окно с ошибкой, а также окно с комментариями от технической поддержки следующим образом:

Рис. 1 Окно Ошибки разбора XML в 1С

XML данные читаются по потокам, так что в каждый из моментов времени объект «сосредоточен» в некотором узле XML. Из-за этого также может возникать фатальная ошибка «Ошибка разбора XML». Для того чтобы её устранить, можно вызвать функцию «ИсключениеЧтенияXml», как показано на скриншоте примера ниже:

Рис. 2 Вызов функции ИсключениеЧтенияXML для устранения Ошибки разбора XML в 1С  

3.    «Обход» Ошибки разбора XML в 1С

Данные два способа (очистка кэша метаданных и функция «ИсключениеЧтенияXml») – не все возможные варианты устранения ошибки разбора XML. Далее рассмотрим нестандартный подход, который позволит избежать ошибки еще до её возникновения.

Для наглядности будем работать в конфигурации 1С:Бухгалтерия предприятия, одной из наиболее распространенных программ фирмы 1С. У многих людей, которые пользуются программой 1С:Отчётность появляются неполадки при попытках открыть данные/файлы от налоговой. Чтобы открыть такой файл повторяем следующие действия:

·        Переходим по пути: «Настройки 1С:Отчётности → Журнал обмена с контролирующими органами», как показано на скриншоте ниже:

Рис. 3 Настройка 1С Отчетности

·        Далее кликаем на «Запросы» и выделяем ту выписку, которую не было возможности открыть из-за ошибки, как продемонстрировано на скриншоте ниже:

Рис. 4 Выбор выписки с Ошибкой разбора XML в 1С

·        Обращаем внимание на стадию отправки, которая располагается внизу этого сообщения, и кликаем два раза на зелёный круг:

Рис. 5 Стадия отправки документа с Ошибкой разбора XML в 1С

·      Появляется транспортное сообщение, в нём кликаем на «Выгрузить» и выбираем папку, куда необходимо провести выгрузку, после чего сохраняем данный файл. Пробуем открыть его, при помощи любого из графических редакторов, который может поддерживать формат PDF, как показано на скриншоте ниже:

Рис. 6 Результат обхода Ошибки разбора XML в 1С

·        Всё успешно открылось, а ошибка даже не успела возникнуть.

Специалист компании «Кодерлайн»

Айдар Фархутдинов

Понравилась статья? Поделить с друзьями:
  • Ошибка при импорте сегмента ютуб шортс
  • Ошибка при импорте файла презентация
  • Ошибка при запуске яндекс браузера неправильная параллельная конфигурация
  • Ошибка при импорте настроек майнкрафт
  • Ошибка при импорте файла повер поинт