Apache poi excel色单元问题

时间:2015-01-21 06:56:01

标签: java excel apache-poi

我正在使用apache poi编写excel数据。

String colour = "A2C465";
byte[] ret = new byte[3];
for(int i=0; i<3; i++){
    ret[i] = (byte)hexToInt(colour.charAt(i * 2), colour.charAt(i*2+1));
}

public int hexToInt(char a, char b){
        int x = a < 65 ? a-48 : a-55;
        int y = b < 65 ? b-48 : b-55;
        return x*16+y;
    }

在循环迭代之后,我得到ret = { - 94,-60,101}。但实际的RGB代码是{162,196,101}(因为从int转换为byte)。因为这样在excel表中颜色变为不同的颜色你可以帮助我吗?

2 个答案:

答案 0 :(得分:0)

Axel Richter的评论有你正在寻找的答案,如果你需要将字节转换为int,你应该使用按位并避免保留符号。以下示例将字节显示为其有符号值,并在转换为int时显示。

    byte[] ret = DatatypeConverter.parseHexBinary("A2C465");
    for (byte b: ret) {
        int asInt = b & 0xFF;
        System.out.println(b + " vs " + asInt);
    }

答案 1 :(得分:0)

如果返回值为负数,则只需添加256!

-94 + 256 = 162

-60 + 256 = 196

101将保持101,因为一个字节的范围是-128到127.