」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > [Go][Excelize] 確定儲存格值是否有刪除線

[Go][Excelize] 確定儲存格值是否有刪除線

發佈於2024-11-07
瀏覽:787

簡介

我想確定儲存格的值是否有刪除線。

[Go][Excelize] Determining if a cell

確定儲存格的值是否有刪除線

要確定儲存格的值是否有刪除線,我必須透過兩種方式取得儲存格樣式。

如果只有單元格的某些值被刪除,例如“A1”,我應該從“excelize.RichTextRun”取得單元格樣式。
如果單元格中的所有值都像“A2”一樣被刪除,我應該從“excelize.xlsxXf”獲得單元格樣式。

xlsxReader.go

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

資源

  • 儲存格 - Excelize 文件
  • xlsx/tutorial/tutorial.adoc - tealeg/xlsx - GitHub
版本聲明 本文轉載於:https://dev.to/masanori_msl/goexcelize-determining-if-a-cells-value-has-a-strike-through-2ai0?1如有侵犯,請聯絡[email protected]刪除
最新教學 更多>
  • Web 開發的未來:每個開發人員都應該了解的新興趨勢和技術
    Web 開發的未來:每個開發人員都應該了解的新興趨勢和技術
    介绍 Web 开发从早期的静态 HTML 页面和简单的 CSS 设计已经走过了漫长的道路。多年来,在技术进步和用户对更具动态性、交互性和响应性的网站不断增长的需求的推动下,该领域发展迅速。随着互联网成为日常生活中不可或缺的一部分,网络开发人员必须不断适应新趋势和技术,以保持相关性并...
    程式設計 發佈於2024-11-07
  • 初學者 Python 程式設計師可以使用 ChatGPT
    初學者 Python 程式設計師可以使用 ChatGPT
    作为一名 Python 初学者,您面临着无数的挑战,从编写干净的代码到排除错误。 ChatGPT 可以成为您提高生产力和简化编码之旅的秘密武器。您可以直接向 ChatGPT 提问并获得所需的答案,而无需筛选无休止的文档或论坛。无论您是在调试一段棘手的代码、寻找项目灵感,还是寻求复杂概念的解释,Ch...
    程式設計 發佈於2024-11-07
  • 在您的系統中安裝 Deno
    在您的系統中安裝 Deno
    ?在 Windows 上安裝 Deno:快速指南 嘿,夥計們! ? 準備好深入了解 Deno 了嗎?讓我們開始在您的 Windows 電腦上安裝這個出色的執行時間。這非常簡單,我將一步步指導您! ?第 1 步:開啟 PowerShell 首先,您需要 Power...
    程式設計 發佈於2024-11-07
  • 如何在 Mac OS X 上有效管理多個 Java 版本?
    如何在 Mac OS X 上有效管理多個 Java 版本?
    在Mac OS X 上管理多個Java 版本在Mac OS X 上進行開發時,對於具有不同兼容性要求的各種專案可能需要多個Java 版本。本文探討如何在 Mac 上有效地安裝和管理多個 Java 版本。 Homebrew 方法Homebrew 是一款流行的 Mac 套件管理器,為管理多個 Java ...
    程式設計 發佈於2024-11-07
  • 掌握 Neowith Java:設定、查詢、交易和視覺化
    掌握 Neowith Java:設定、查詢、交易和視覺化
    Neo4j 是一個強大的圖形資料庫,擅長管理高度互聯的資料。當與 Java 結合使用時,它為建立需要複雜關係建模的應用程式提供了強大的解決方案。這篇文章將引導您了解在 Java 中使用 Neo4j 的基礎知識,包括設定、查詢和最佳實務。 使用 Java 設定 Neo4j 首先,您需...
    程式設計 發佈於2024-11-07
  • JavaScript 中最大的錯誤(以及如何避免它們)
    JavaScript 中最大的錯誤(以及如何避免它們)
    JavaScript 是一种非常强大且适应性强的语言,但它也可能存在难以检测的问题。在这篇博客文章中,我们将探讨开发人员在使用 JavaScript 时发现的五个最常见的缺陷,以及这些问题的原因和解决方案。无论您是经验丰富的开发人员还是刚刚起步的开发人员,了解这些常见危险都会为您节省故障排除时间。 ...
    程式設計 發佈於2024-11-07
  • 限制 Laravel 模型上的急切載重關係
    限制 Laravel 模型上的急切載重關係
    介紹 有時,當您渴望在 Laravel 模型上載入關係時,您可能想要限制返回的相關模型的數量。 例如,在部落格平台上,您可能想要載入系統中的每位作者及其三篇貼文。 在 Laravel 的舊版本中,限制急切加載的關係是一項有點繁瑣的任務。我從來沒有真正找到一種感覺正確的優雅方式來...
    程式設計 發佈於2024-11-07
  • 如何使用 GDB 在 C++ 中列印向量元素?
    如何使用 GDB 在 C++ 中列印向量元素?
    透過GDB 在C 中列印向量元素在GDB 中調試C 程式碼時,檢查std::vector 的內容可能具有挑戰性。例如,考慮一個名為 myVector 的 std::vector。我們如何有效地印製它的元素? 在 GCC 4.1.2 中,解決方案涉及存取向量的內部指標 myVector._M_impl...
    程式設計 發佈於2024-11-07
  • 如何在不同瀏覽器中自訂下拉清單寬度?
    如何在不同瀏覽器中自訂下拉清單寬度?
    IE 下拉清單寬度修改在Internet Explorer 中,下拉清單鏡像其保管箱的寬度,而在Firefox 中,它會適應內容。此限制需要擴展保管箱以容納最長的選擇,從而導致網頁美觀不美觀。 基於CSS 的可變寬度解決方案要克服此問題,使用CSS 允許下拉框和下拉列表使用不同的寬度,請考慮以下事項...
    程式設計 發佈於2024-11-07
  • 在 C++ 中格式化時如何右對齊輸出字串?
    在 C++ 中格式化時如何右對齊輸出字串?
    在C 中透過右對齊格式化輸出字串處理包含資料(例如座標)的文字檔案時,需要對齊列中的項目經常出現正確格式化的問題。在 C 中,輸出字串的操作對於實現這種對齊至關重要。本文解決了輸出字串右對齊的問題,提供了使用標準 C 技術的解決方案。 為了處理輸入文字文件,使用 line.split() 函數將每一...
    程式設計 發佈於2024-11-07
  • CSS 漸層產生器
    CSS 漸層產生器
    歡迎來到「免費 CSS 工具」系列。 在本系列中,我們將找到完全免費且易於使用的 CSS 工具。 在解釋瞭如何使用該工具後,我將與您分享該工具的連結。 工具連結:此工具可在 webdevtales.com 上取得 工具1:CSS漸層生成器 工具檢視: 介紹 歡迎使用 CSS 漸...
    程式設計 發佈於2024-11-07
  • 為什麼小型函數會讓你成為編碼英雄的原因
    為什麼小型函數會讓你成為編碼英雄的原因
    嘿,代碼愛好者們! ?您是否曾經發現自己迷失在無盡的線條海洋中,想知道一個功能在哪裡結束,另一個功能從哪裡開始?我們都去過那裡。今天,我們來談談為什麼將程式碼分解成更小的、可管理的區塊不僅僅是一種最佳實踐——它還能改變你的開發技能和職業生涯。 1.未來的你會感謝你 想像一下:現在是...
    程式設計 發佈於2024-11-07
  • JavaScript 變數名稱中美元符號的含義是什麼?
    JavaScript 變數名稱中美元符號的含義是什麼?
    為什麼在 JavaScript 變數名稱中使用美元符號? 提供的 JavaScript 程式碼包含一個名為「$item」的變量,該變數引發問題:變數名稱中美元符號的用途是什麼? 在 JavaScript 中,變數名稱前面的美元符號對於解譯器來說沒有特殊意義。它用作輕鬆識別包含 jQuery 物件的變...
    程式設計 發佈於2024-11-07
  • Laravel 中的授權 - 初學者指南
    Laravel 中的授權 - 初學者指南
    掌握 Laravel 中的授權:Gates 與策略類別 ?? 在現代 Web 應用程式中,控制誰可以存取或修改資源至關重要。例如,在部落格應用程式中,您可能希望確保只有貼文的擁有者才能編輯或刪除它。 Laravel 提供了兩種優雅的方式來處理授權:Gates 和 Policy Cl...
    程式設計 發佈於2024-11-07
  • Laravel 的枚舉
    Laravel 的枚舉
    報告 在我從事的一個專案中,有一個選擇欄位定義了不會更改的值。因此,為了列出此選擇中的項目,我決定建立一個枚舉類,然後描述這些值。但是,該項目需要支援英語和西班牙語,並且選擇選項的文本需要適應這一點,同時又不丟失對相應枚舉項的引用。換句話說,如果我選擇了“馬”這個項目,我需要係統知道這個項目仍然是“...
    程式設計 發佈於2024-11-07

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3