stringtranslate.com

Символическая ссылка (SYLK)

Символическая ссылка ( SYLK ) — это формат файла Microsoft, который обычно используется для обмена данными между приложениями, в частности электронными таблицами . Файлы SYLK обычно имеют .slkсуффикс. Состоящий только из отображаемых символов ANSI , он может быть легко создан и обработан другими приложениями, такими как базы данных .

Microsoft никогда не публиковала спецификацию SYLK. Варианты формата поддерживаются Multiplan , Microsoft Excel , Microsoft Works , OpenOffice.org , LibreOffice [1] и Gnumeric . Формат был представлен в 1980-х годах и не развивался с 1986 года. [2]

Часто встречающееся (и ложное) «появление» файла SYLK происходит, когда формат значений, разделенных запятыми (CSV), сохраняется с некавычным первым именем поля «ID», то есть первые два символа совпадают с первыми двумя символами формата файла SYLK. Microsoft Excel (по крайней мере, для Office 2016) затем выдает вводящие в заблуждение сообщения об ошибках, касающиеся формата файла, например: «Файл, который вы пытаетесь открыть, 'x.csv', имеет формат, отличный от указанного расширением файла...». [3] [4]

Известно, что SYLK вызывает проблемы безопасности , поскольку он позволяет злоумышленнику запустить произвольный код , дает возможность скрыть вектор атаки под безобидным видом файла CSV и по-прежнему включен по умолчанию в последних (2016 г.) версиях Microsoft Excel. [2]

Ограничения

SYLK не поддерживает Unicode. Даже если файл SYLK создан приложением, поддерживающим Unicode (например, Microsoft Excel), файл SYLK будет закодирован в кодовой странице ANSI текущей системы , а не в Unicode. Если приложение содержало символы, которые можно было бы отобразить в Unicode, но не имеющие кодовой точки в кодовой странице текущей системы, они будут преобразованы в вопросительные знаки ('?') в файле SYLK.

Точка с запятой рассматривается как разделитель полей в SYLK, поэтому не может использоваться без экранирования в значениях данных. Если строка символов в файле SYLK должна содержать точку с запятой (;), то перед ней должна стоять другая точка с запятой, чтобы строка выглядела, например, как "WIDGET;;AXC1254". MS Excel удалит первую точку с запятой при импорте, и элемент данных будет выглядеть как "WIDGET;AXC1254".

Каждая строка входного файла SYLK не должна быть длиннее 260 символов. В противном случае Microsoft Excel выдаст сообщение об ошибке и пропустит загрузку слишком длинной строки.

Пример кода SYLK

В качестве примера приведем следующий код SYLK в текстовом файле с расширением .slk:

ИД;ПC;Y1;X1;K"Ряд 1"C;Y2;X1;K"Ряд 2"C;Y3;X1;K"Всего"С;Y1;X2;K11С;Y2;X2;K22С;Y3;X2;K33Э

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

для числового форматирования

Форматирование 2 десятичных знаков применяется к столбцу 2 с помощью

Ф;П2;С2

где P0 — общее значение, P1 — без десятичной точки, P2 — с 2 цифрами, P3 имеет начальный знак $ с 2 десятичными точками, как определено ниже.

ИД;ПP;PОбщееП;П_(* #,##0_);;_(* \-#,##0_);;_(* "-"_);;_(@_)П;П_(* #,##0.00_);;_(* \(#,##0.00\);;_(* "-"??_);;_(@_)П;П_("$"* #,##0.00_);;_("$"* \(#,##0.00\);;_("$"* "-"??_);;_(@_)C;Y1;X1;K"Ряд 1"C;Y2;X1;K"Ряд 2"C;Y3;X1;K"Всего"С;Y1;X2;K11С;Y2;X2;K22С;Y3;X2;K0;ER1C2+R2C2Ф;П2;С2Э

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

для ширины столбца

F;W⟨n1⟩[S]⟨n2⟩[S]⟨n3⟩определяет ширину группы столбцов:

[С]
одно место
⟨n1⟩
первый столбец
⟨n2⟩
последний столбец
⟨n3⟩
ширина столбцов в количестве символов

Например: добавление этих кодов SYLK изменит ширину столбцов 1 и 2 до 20 и 30 соответственно.

Ж;Н1 1 20Ж;В2 2 30

свойства форматирования ячеек

Ф; ⟨кл⟩ ⟨н⟩ ⟨к2⟩
⟨cl⟩
один из следующих односимвольных кодов форматирования:
Д
по умолчанию
С
непрерывный кросс-клеточный дисплей
Э
научное возведение в степень
Ф
фиксированная десятичная точка
Г
общий формат
$
начальный $ и 2 десятичных знака
*
столбчатая диаграмма, одна звездочка на единицу (5 будет *****)
⟨н⟩
количество цифр.
⟨c2⟩
один из следующих 1-символьных кодов выравнивания:
Д
по умолчанию
С
центр
Г
общий(текстслева, числасправа)
Л
выравнивание по левому краю
Р
правильно выравнивать

Например: следующий код SYLK демонстрирует свойства форматирования ячеек:

ИД;П P;PОбщее C;Y1;X1;K"Строка 1, выравнивание по левому краю" Ф;П0;ФГ0Л C;Y2;X1;K"Строка 2, выравнивание по правому краю" Ф;П0;ФГ0Р C;Y3;X1;K"Всего в центре" Ф;П0;ФГ0С С;Y1;X2;K11 С;Y2;X2;K22 С;Y3;X2;K0;ER1C2+R2C2 Ф;Y1;X2;FF2L Ф;Y2;X2;FF2R Ф;Y3;X2;Ф$2С Ж;Н1 2 25 Э

Синтаксис SYLK

SYLK_файл ::=Запись +Запись ::=Поле RecordType* новая строка

Дата и время хранятся как значение с плавающей точкой. Целая часть числа — это количество дней от 1 января 1900 года (если запись O содержит директиву ;V0, указывающую 1900 год в качестве начальной точки для вычислений), дробная часть — это количество секунд, деленное на 86400 (60*60*24, количество секунд в сутках). Преобразование во время unix можно выполнить, вычитая разницу между 1 января 1970 года и 1 января 1900 года (25 569 дней) и затем умножая на 86400; преобразование из времени unix в дату и время SYLK выполняется путем деления значения на 86400 и последующего прибавления 25569. Стиль ячейки должен быть установлен на некоторое значение форматирования даты, например, P;Pdd/mm/yyyy\ hh:mm:ssдля правильного отображения.

Экспорт файлов .slk, открытых в Excel, имеет ограничение в 255 символов в ячейке. Этого ограничения нет в LibreOffice.

Внешние ссылки

Синтаксис SYLK можно найти по адресу:

и по адресу:

Ограничения, связанные с чтением и сохранением в Excel:

Ссылки

  1. ^ «LibreOffice Calc — Поддерживаемые форматы файлов». 12 ноября 2016 г.
  2. ^ ab Stan Hegt (2019-10-30). "Злоупотребление форматом файла SYLK". outflank.nl . Получено 2019-12-14 .
  3. ^ "Сообщение об ошибке "SYLK: Недопустимый формат файла" при открытии файла" . Получено 18 августа 2015 г.
  4. ^ "Импорт Excel CSV возвращает ошибку формата файла SYLK". 9 января 2012 г. Получено 18 августа 2015 г.