Символическая ссылка ( SYLK ) — это формат файла Microsoft, который обычно используется для обмена данными между приложениями, в частности электронными таблицами . Файлы SYLK обычно имеют .slkсуффикс. Состоящий только из отображаемых символов ANSI , он может быть легко создан и обработан другими приложениями, такими как базы данных .
Часто встречающееся (и ложное) «появление» файла 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:
при чтении с помощью соответствующей электронной таблицы будет отображаться следующим образом:
Ряд 1
11.00
Ряд 2
22.00
Общий
33.00
для ширины столбца
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* новая строка
запись удостоверения личности
Использовать:
Заголовок, идентифицирующий тип и создателя электронной таблицы.
Должна быть первой записью в файле.
Тип записи:
ИДЕНТИФИКАТОР
Обязательные поля:
П программа
создатель файла
Возможные создатели включают:
МП (Мультиплан)
XL (Excel)
Возможные поля:
Н
Если присутствует, файл использует защиту ячеек в стиле ;N
Если отсутствует, файл использует защиту ячеек в стиле ;P
Э
Если присутствуют, записи NE избыточны.
Если записи NE отсутствуют, они не являются избыточными.
запись B
Использовать:
Сообщает количество строк и столбцов в электронной таблице.
Рекомендуется размещать его перед записями C и F.
Тип записи:
Б
Обязательные поля:
X столбцов
сообщает максимальное количество столбцов
Y-ряды
сообщает максимальное количество строк
запись С
Использовать:
Содержимое клетки
Тип записи:
С
Обязательные поля:
X-колонка
позиция столбца (на основе единицы)
Возможные поля:
Y-ряд
позиция строки (на основе единицы). Если не указано, используется последнее встреченное значение.
выражение E
выражение для клетки
Значение К
значение ячейки
C-колонка
ссылка на столбец
Ряд R
ссылка на строку
Г
определяет общую ценность
Д
определяет общее выражение
С
ссылается на общее значение или общее выражение
Н
Если присутствует, ячейка не защищена.
Если отсутствует и в записи идентификатора присутствует ;N, ячейка защищена.
П
Если присутствует, ячейка защищена.
Если отсутствует и ;N отсутствует в записи идентификатора, ячейка не защищена.
ЧАС
Если присутствует, ячейка скрыта.
Если отсутствует, ячейка не скрыта.
М выражение
матричное выражение из (X,Y) в (C,R)
я
внутри матрицы
Совместимые поля:
Если присутствует ;G, ;E должен отсутствовать.
Если присутствует ;G, то должен присутствовать ;K.
Если присутствует ;D, то должно присутствовать ;E.
Если присутствует ;S, ;E, ;K, ;G, ;D и ;M должны отсутствовать.
Если присутствует ;S, должны присутствовать ;R и ;C. (Они определяют строку и столбец, из которых копируется общее значение/выражение.)
Если в записи идентификатора присутствует ;N, ;P должен отсутствовать.
Если ;N отсутствует в записи идентификатора, ;N должен отсутствовать.
Если присутствует ;M, ;E должен отсутствовать.
Если присутствует ;I, ;K и ;E должны отсутствовать
P запись
Использовать:
Формат ячейки
Если присутствуют записи F, предшествует им.
Обязательные поля:
Форматирование P
Спецификация формата ячейки в стиле Excel
F- запись
Использовать:
Формат
Если присутствуют записи P, следует за ними.
Возможные поля:
X-колонка
колонка (основанная на одной)
Y-ряд
ряд (один базовый)
C-колонка
колонка (основанная на одной)
Ряд R
ряд (один базовый)
Формат F
Формат ячейки/строки/столбца
Формат формата -
цифры ch1 ch2
ch1 — это
Д
по умолчанию
С
валюта
Э
показатель степени
Ф
зафиксированный
Г
общий
$
доллар
*
график
%
процент
digits — количество цифр после десятичной точки
ch2 — выравнивание
Д
по умолчанию
С
центр
Г
стандартный
Л
левый
Р
верно
-
проигнорировано
Х
наполнять
Формат D
Формат по умолчанию.
Формат формата -
цифры ch1 ch2
ch1 — это
С
валюта
Э
показатель степени
Ф
зафиксированный
Г
общий
$
доллар
*
график
%
процент
digits — количество цифр после десятичной точки
ch2 — выравнивание
С
центр
Г
стандартный
Л
левый
Р
верно
-
проигнорировано
Х
наполнять
Э
показать формулы
К
показывать запятые
W col1 col2 ширина
установить ширину столбцов
N размер шрифта
шрифт для использования
Индекс P
Формат ячейки Excel, номер записи P (например, P0 означает первую запись P, которая обычно объявляется как P;PGeneral
S-стиль
стиль
Следующие символы могут быть частью стиля
я
курсив
Д
смелый
Т
верхняя сетка
Л
сетка слева
Б
нижняя сетка
Р
сетка справа
С
затененный фон
ЧАС
Если присутствуют, не показывать заголовки строк/столбцов
Если отсутствует во всем файле, показать заголовки строк/столбцов
Г
Если присутствует, не показывать линии сетки по умолчанию
Если отсутствуют во всем файле, показать линии сетки по умолчанию
Совместимые поля:
Должен присутствовать хотя бы один из символов ;X, ;Y, ;C, ;R, ;D, ;E, ;K, ;W, ;P, ;H или ;G.
Если присутствует ;X или ;Y, должны присутствовать как ;X, так и ;Y. (Это задает формат ячейки.)
Если присутствует ;X, то ;R, ;C, ;E, ;K, ;W, ;N, ;H, ;G должны отсутствовать.
Если присутствует ;R, ;X, ;Y, ;C, ;E, ;K, ;W, ;N, ;H, ;G должны отсутствовать. (Это устанавливает формат строки по умолчанию.)
Если присутствует ;C, ;X, ;Y, ;R, ;E, ;K, ;W, ;N, ;H, ;G должны отсутствовать. (Это устанавливает формат столбца по умолчанию.)
Если присутствует ;D, ;X, ;Y, ;R, ;C должны отсутствовать. (Это устанавливает формат электронной таблицы по умолчанию.)
Если присутствуют ;X, ;Y, ;R, ;C, то должны присутствовать ;P и/или ;F и/или ;S.
О запись
Использовать:
Параметры
Возможные поля:
G итер дельта
Если присутствует, разрешить итерацию значения
При отсутствии циклические ссылки не допускаются.
iter (максимальное количество итераций)
дельта (шаговый тест. Если меньше, то закончено.)
С
проверка завершения в ближайшей предыдущей записи C
П
лист защищен
Л
используйте ссылки режима A1
Даже если указано ;L, в выражениях файла SYLK используются ссылки R1C1.
М
Если присутствует, используйте ручной пересчет.
При отсутствии используйте автоматический перерасчет.
Э
Макро лист.
Это должно произойти до первого появления поля ;G или ;F в записи NN.
Она должна располагаться перед первой записью C, которая использует только макрофункцию.
Значение V
значение указывает базовую дату, используемую для расчета значений последовательной даты
0:1 Январь 1900
4:1 января 1904 г.
запись НУ
Использовать:
замена имени файла
Если присутствуют записи NE, они должны им предшествовать.
Обязательные поля:
Имя файла L
старое имя файла
F имя файла
новое имя файла
запись NE
Использовать:
внешняя ссылка
Обязательные поля:
выражение E
Целевая область в электронной таблице
F имя файла
Исходный файл
S-выражение
Исходная область на внешнем листе
запись NN
Использовать:
Определяет имена
Более эффективно, если NN появляется перед использованием имени.
Обязательные поля:
Имя N
имя
выражение E
выражение, описывающее значение имени
Возможные поля:
Г ч1 ч2
имя исполняемого файла (макроса) с псевдонимом клавиши команды
К ч1 ч2
обычное имя с неиспользуемыми псевдонимами команд
Ф
можно использовать как функцию
Совместимые поля:
Если присутствует ;G, ;K должен отсутствовать.
W запись
Использовать:
Определения окон
запись NL
Использовать:
Диаграмма внешняя ссылка
Электронная запись
Использовать:
Конец файла.
Должна быть последняя запись.
Дата и время хранятся как значение с плавающей точкой. Целая часть числа — это количество дней от 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 можно найти по адресу:
Краткое описание Microsoft SYLK (см. также статью Злоупотребление форматом файла SYLK для получения полезной информации)
Краткое описание формата GFF: Microsoft SYLK
и по адресу:
FAQ по comp.apps.spreadsheets
Советы по Excel: преобразование меток даты и времени Unix
Ограничения, связанные с чтением и сохранением в Excel:
Возможности Microsoft.com Excel
Ссылки
^ «LibreOffice Calc — Поддерживаемые форматы файлов». 12 ноября 2016 г.
^ ab Stan Hegt (2019-10-30). "Злоупотребление форматом файла SYLK". outflank.nl . Получено 2019-12-14 .
^ "Сообщение об ошибке "SYLK: Недопустимый формат файла" при открытии файла" . Получено 18 августа 2015 г.
^ "Импорт Excel CSV возвращает ошибку формата файла SYLK". 9 января 2012 г. Получено 18 августа 2015 г.