我想确定单元格的值是否有删除线。
要确定单元格的值是否有删除线,我必须通过两种方式获取单元格样式。
如果只有单元格的某些值被删除,如“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中文网其他相关文章!