Файл PHP XLS 2003 (Excel) - обнаружение вертикального выравнивания ячейки - PullRequest
0 голосов
/ 05 декабря 2011

Мне нужно немного изменить библиотеку PHP Excel Reader; http://code.google.com/p/php-excel-reader/

Я хочу добавить поддержку вертикального выравнивания ячеек (верх, середина, низ).

Вот как определяется нормальное выравнивание:

                    $alignbit = ord($data[$pos+10]) & 3;

А вот спецификация формата Excel 2003:

http://sc.openoffice.org/excelfileformat.pdf

Я не уверен, что это правильная настройка:

Кто-нибудь знает, какой бит мне нужно получить (подобно $ alignbit) для получения вертикального выравнивания? (1 из 6 возможностей)

enter image description here

enter image description here Спасибо, Уэсли

1 Ответ

0 голосов
/ 05 декабря 2011

Лично я бы использовал

$horizontalAlign = (0x07 & ord($data[$pos+10])) >> 0;

вместо

$horizontalAlign = ord($data[$pos+10]) & 3;

потому что вы можете более точно сопоставить маску (0x07) с определением спецификации

Используя тот же принцип, вертикальное выравнивание - это биты 6-4, маска 0x70, поэтому

$verticalAlign = (0x70 & ord($data[$pos+10])) >> 4;
switch ($verticalAlign) {
    case 0:
        //  VERTICAL_TOP
        break;
    case 1:
        //  VERTICAL_CENTER
        break;
    case 2:
        //  VERTICAL_BOTTOM
        break;
    case 3:
        //  VERTICAL_JUSTIFY
        break;
    case 4:
        //  VERTICAL_DISTRIBUTED
        break;
}

PS. Почему вы все еще используете частичную спецификацию Open Office, когда Microsoft опубликовала полную спецификацию

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...