我想确定单元格的值是否有删除线。
![[Go][Excelize] 确定单元格值是否有删除线](https://img.php.cn/upload/article/000/887/227/172472148685291.jpg)
要确定单元格的值是否有删除线,我必须通过两种方式获取单元格样式。
如果只有单元格的某些值被删除,如“a1”,我应该从“excelize.richtextrun”获取单元格样式。
如果单元格中的所有值都像“a2”一样被删除,我应该从“excelize.xlsxxf”获得单元格样式。
package main
import (
"fmt"
"log"
"github.com/xuri/excelize/v2"
)
func getcellstyles(filepath string) {
xlfile, err := excelize.openfile(filepath)
if err != nil {
fmt.println(err)
}
defer func() {
// close the spreadsheet.
if err := xlfile.close(); err != nil {
fmt.println(err)
}
}()
sheetname := xlfile.getsheetname(0)
log.println(sheetname)
printcellstyles(xlfile, sheetname, "a1")
printcellstyles(xlfile, sheetname, "a2")
printcellstyles(xlfile, sheetname, "a3")
}
func printcellstyles(xlfile *excelize.file, sheetname string, celladdress string) {
log.printf("--------%s--------", celladdress)
value, _ := xlfile.getcellvalue(sheetname, celladdress)
log.println(value)
// if the cell value has multiple formats, "getcellrichtext" will return multiple values.
runs, _ := xlfile.getcellrichtext(sheetname, celladdress)
if len(runs) > 0 {
for _, r := range runs {
if r.font == nil {
log.printf("value: %s no fonts", r.text)
} else {
log.printf("value: %s strike through?: %t", r.text, r.font.strike)
}
}
}
styleid, _ := xlfile.getcellstyle(sheetname, celladdress)
// get cell style info by styleid
style := xlfile.styles.cellxfs.xf[styleid]
// get font info by style.fontid
font := xlfile.styles.fonts.font[*style.fontid]
// check
if font.strike != nil && *font.strike.val {
log.println("the cell value has a strike through")
} else {
log.println("the cell value doesn't have a strike through")
}
}
2024/08/27 03:02:32 Sheet1 2024/08/27 03:02:32 --------A1-------- 2024/08/27 03:02:32 123abc 2024/08/27 03:02:32 Value: 12 No fonts 2024/08/27 03:02:32 Value: 3ab Strike through?: true 2024/08/27 03:02:32 Value: c Strike through?: false 2024/08/27 03:02:32 The cell value doesn't have a strike through 2024/08/27 03:02:32 --------A2-------- 2024/08/27 03:02:32 aiu 2024/08/27 03:02:32 The cell value has a strike through 2024/08/27 03:02:32 --------A3-------- 2024/08/27 03:02:32 abc def ghi 2024/08/27 03:02:32 Value: abc No fonts 2024/08/27 03:02:32 Value: def Strike through?: false 2024/08/27 03:02:32 Value: Strike through?: false 2024/08/27 03:02:32 Value: ghi Strike through?: false 2024/08/27 03:02:32 The cell value doesn't have a strike through
以上就是[Go][Excelize] 确定单元格值是否有删除线的详细内容,更多请关注php中文网其它相关文章!
全网最新最细最实用WPS零基础入门到精通全套教程!带你真正掌握WPS办公! 内含Excel基础操作、函数设计、数据透视表等
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号