PHP XLS 2003 (Excel) 文件 - 检测单元格垂直对齐方式

发布于 2024-12-19 15:07:08 字数 717 浏览 0 评论 0原文

我需要对 PHP Excel Reader 库进行一些细微的更改; http://code.google.com/p/php-excel-reader/< /a>

我想添加对单元格垂直对齐(顶部、中间、底部)的支持。

以下是检测正常对齐方式的方法:

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

这是 excel 2003 格式规范:

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

我不确定这是否是正确的设置:

有谁知道我需要获取什么位(类似于 $alignbit)才能获得垂直对齐? (6 种可能性之一)

在此处输入图像描述

在此处输入图像描述 谢谢, 韦斯利

I need to make a slight change to the PHP Excel Reader library; http://code.google.com/p/php-excel-reader/

I want to add support for vertical-alignment of cells (top, middle, bottom).

Here's how the normal alignment is detected:

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

And here is the excel 2003 format specification:

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

I'm not sure if this is the correct setting:

Does anyone know what bit I need to get (similar to the $alignbit) in order to get the vertical alignment? (1 of 6 possibilities)

enter image description here

enter image description here
Thanks,
Wesley

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

寻找我们的幸福 2024-12-26 15:07:08

就我个人而言,我会使用

$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 的部分规范

Personally I'd use

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

rather than

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

because you can then match the mask (0x07) up with the spec definition more obviously

Using the same principle, vertical alignment is bits 6-4, mask 0x70, so

$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. Why are you still using Open Office's partial spec, when Microsoft have published the full specification

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文