Golang使用Excelize获取xlsx文件中的文本颜色

Golang使用Excelize获取xlsx文件中的文本颜色 我使用Excelize(“github.com/360EntSecGroup-Skylar/excelize”)处理.xlsx文件。 需要识别单元格中的文本颜色。 GetCellStyle方法无法明确确定文本颜色,因为它只返回一个整数值 如何获取单元格中的文本颜色?

2 回复

我决定使用“github.com/tealeg/xlsx”。

font_color := cell.GetStyle().Font.Color

更多关于Golang使用Excelize获取xlsx文件中的文本颜色的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


在Excelize中,可以通过GetCellStyle获取样式索引,然后使用GetStyle方法解析样式中的字体颜色信息。以下是获取单元格文本颜色的完整示例:

package main

import (
    "fmt"
    "log"
    
    "github.com/360EntSecGroup-Skylar/excelize/v2"
)

func getCellTextColor(f *excelize.File, sheet, cell string) (string, error) {
    // 获取单元格样式索引
    styleID, err := f.GetCellStyle(sheet, cell)
    if err != nil {
        return "", err
    }
    
    // 通过样式索引获取完整样式
    style, err := f.GetStyle(styleID)
    if err != nil {
        return "", err
    }
    
    // 检查字体颜色设置
    if style.Font != nil && style.Font.Color != "" {
        return style.Font.Color, nil
    }
    
    return "", fmt.Errorf("未找到文本颜色设置")
}

func main() {
    f, err := excelize.OpenFile("example.xlsx")
    if err != nil {
        log.Fatal(err)
    }
    defer f.Close()
    
    // 获取A1单元格的文本颜色
    color, err := getCellTextColor(f, "Sheet1", "A1")
    if err != nil {
        log.Fatal(err)
    }
    
    fmt.Printf("单元格A1的文本颜色: %s\n", color)
}

颜色值返回的是ARGB格式的字符串,例如:

  • "FFFF0000" 表示红色
  • "FF00FF00" 表示绿色
  • "FF0000FF" 表示蓝色

如果需要将颜色值转换为标准颜色名称,可以添加颜色映射:

func getColorName(color string) string {
    colorMap := map[string]string{
        "FFFF0000": "红色",
        "FF00FF00": "绿色", 
        "FF0000FF": "蓝色",
        "FFFFFF00": "黄色",
        "FF000000": "黑色",
        "FFFFFFFF": "白色",
    }
    
    if name, exists := colorMap[color]; exists {
        return name
    }
    return "未知颜色"
}

这样就可以准确获取单元格中的文本颜色信息了。

回到顶部