Символическая ссылка ( 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* новая строка
- запись удостоверения личности
- Использовать:
- Заголовок, идентифицирующий тип и создателя электронной таблицы.
- Должна быть первой записью в файле.
- Тип записи:
- ИДЕНТИФИКАТОР
- Обязательные поля:
- П программа
- создатель файла
- Возможные создатели включают:
- МП (Мультиплан)
- 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 г.