如何使用 ONLYOFFICE 巨集自動清理電子表格

清理電子表格是一項重複性工作:導出的名稱會帶有多餘的空格,貼上的文字包含不間斷空格,而且大範圍替換可能會損壞公式或 ID。 ONLYOFFICE 巨集可以規範指定範圍內的文本,同時保留數值和公式單元格不變。以下範例僅處理空格;重複項目刪除、日期轉換和空白行刪除需要單獨的規則。

文件已於 2026 年 10 月 6 日審核。 ONLYOFFICE巨集使用 Office JavaScript API 來撰寫 JavaScript 程式碼,而非 Excel VBA。編輯器的目前文件中,巨集工作區位於「檢視」→「巨集」功能表下。桌面版和主機版的工具列外觀可能略有不同。

此巨集可以處理清理任務。

此範例會移除文字開頭和結尾的空格或製表符,將不間斷空格替換為普通空格,並合併文字中重複出現的空格或製表符。它會跳過公式和非字串類型的值。這種精簡的操作範圍可以降低在準備定期匯入時變更日期、金額或計算儲存格的可能性。

數據問題樣本的作用自動化前先進行審核
前導空格或尾隨空格和製表符從文字儲存格中移除它們通常情況下,名稱和標籤使用空格是安全的,但請檢查空格有意義的欄位。
不間斷空間用普通空格替換它們適用於複製的網頁文字;請抽查原始碼字段
重複的空格或製表符將每次運行合併到一個空間中請勿用於固定寬度文字或有意縮排的文字。
公式、數字和布林值使它們保持不變運行後驗證公式單元格是否仍然能夠計算。
重複行、日期、空白行不會改變它們首先定義業務規則;這些並非純粹的表面清理工作。

1. 準備一份副本並定義範圍

在執行任何會變更儲存格的巨集之前,請先儲存電子表格的工作副本。確定要清理的工作表和資料行。以下程式碼A2:D500提供了一個範例區域:假設第 1 行包含標題,資料位於 A 列到 D 列。請將此地址變更為與您的工作表相符。使用包含目標記錄的有界區域,並且不要包含註解、公式或無關列。

ONLYOFFICE 電子表格網格,包含客戶、城市和狀態列以及四個範例記錄。
小型工作表提供了一個有界樣本;請將標題行放在清潔範圍之外。

首先進行測試,將一些代表性的記錄複製到臨時工作表中,或複製檔案並縮短範圍,例如A2:D10。包含普通空格、貼上文字、空白儲存格和公式的範例,以便確認巨集如何處理每種情況。

2. 開啟 ONLYOFFICE 巨集編輯器

在 ONLYOFFICE 電子表格編輯器中開啟電子表格,然後選擇「檢視」→「巨集」。在巨集視窗中建立新巨集,或選擇新模組,然後為其指定一個清晰的名稱,例如「巨集CleanTextWhitespace」。 ONLYOFFICE 官方巨集入門指南詳細介紹了此入口點和運行控制項。

ONLYOFFICE 電子表格編輯器,勾選「檢視」標籤,並在功能區上顯示「巨集」控制項。
“視圖”功能區包含用於開啟巨集工作區的「巨集」控制項。

如果您的編輯器設定停用了巨集,請查看「設定」→「進階設定」→「巨集」。 ONLYOFFICE 文件提供了停用巨集、顯示通知或啟用巨集的選項。對於非您建立的工作簿,請勿為了執行一個腳本而全域啟用所有巨集;請檢查程式碼並遵循您所在組織的策略。

3. 貼上這個有界、支持公式的宏

將程式碼貼到巨集編輯器中。A2:D500運行前請進行修改。此處使用的範圍方法已在工作表 GetRange 參考、範圍 GetCells 參考以及GetFormula、GetValue和SetValue的 API 頁面中進行了說明。

(function () {
    var oSheet = Api.GetActiveSheet();
    var oRange = oSheet.GetRange("A2:D500");
    var nRows = oRange.GetRowsCount();
    var nCols = oRange.GetColumnsCount();

    for (var r = 1; r <= nRows; r++) {
        for (var c = 1; c <= nCols; c++) {
            var oCell = oRange.GetCells(r, c);
            var sFormula = oCell.GetFormula();

            // Do not replace formulas with their displayed results.
            if (sFormula) {
                continue;
            }

            var v = oCell.GetValue();

            // Restrict this cleanup to text constants.
            if (typeof v !== "string") {
                continue;
            }

            var sClean = v
                .replace(/\u00A0/g, " ")
                .replace(/[ \t]+/g, " ")
                .replace(/^[ \t]+|[ \t]+$/g, "");

            // SetValue treats strings beginning with "=" as formulas.
            if (sClean.charAt(0) === "=") {
                continue;
            }

            if (sClean !== v) {
                oCell.SetValue(sClean);
            }
        }
    }
})();
ONLYOFFICE 巨集編輯器顯示 JavaScript 程式碼行,這些程式碼行選擇一個限定範圍並讀取公式和單元格值。
程式碼窗格顯示了清理巨集使用的範圍和儲存格讀取方法。

傳遞給巨集的行和列計數器GetCells是相對於選取範圍的;API 範例使用編號位置來存取儲存格。巨集首先讀取每個單元格的公式,如果存在公式則跳過。然後讀取值,並僅編輯實際更改的字串。如果字串在修剪後會變成等號公式,也會被跳過,因為巨集SetValue可以將前導等號解釋為公式。

空格表達式會有意保留換行符。它不會更改大小寫、標點符號、數值或日期序號。如果您的來源資料包含多行註釋、固定寬度欄位或帶有特殊空格的標識符,請單獨測試這些列並調整策略,而不是應用更廣泛的規範化。

4. 運行一次,然後驗證結果

從巨集編輯器運行巨集。由於它會更新所選區域中的儲存格,因此在覆蓋來源檔案之前,請檢查工作副本中已變更的文字。將幾行與原始資料進行比較,包括區域中的第一行和最後一行。確認標題保持不變,公式仍然可以計算,並且日期、貨幣和 ID 等數值單元格沒有更改。

ONLYOFFICE 電子表格網格,其中包含客戶、城市和狀態列,用於清潔後審核。
使用工作表抽查代表性行,並將其與未修改的副本進行比較。

對於大型工作表,請在運行前後篩選或搜尋可疑空格,並比較行數。該巨集不會刪除行、去重記錄、轉換日期或填入空白,因此這些檢查應專注於文字值。如果您需要可見的審計跟踪,請新增單獨的審核列或將清理後的結果複製到暫存工作表中,而不是將狀態訊息寫入任意儲存格。

需要單獨決定的常見清潔規則

  • 重複記錄:在刪除行之前,請確定哪些欄位定義了重複項,並確認重複交易是否有效。兩個相同的名稱不一定代表同一個人或同一個訂單。
  • 空白儲存格和空白行:空白儲存格、零值和文字值(例如「N/A」)的含義各不相同。未經資料規則許可,請勿替換或刪除它們。
  • 日期和數字以文字形式儲存:請先選擇預期格式和區域設定。範例中避免轉換這些值,因為類似這樣的字串03/04/2026在不同地區可能存在歧義。
  • 前導零:當匯入識別碼(例如00127文字)時,如果電子表格已將其儲存為數字,則修剪文字無法恢復缺少的零。
  • 大小寫規範化:將電子郵件地址轉換為小寫或將州代碼轉換為大寫可能有助於特定字段,但將其應用於名稱或產品描述可能會破壞預期的大小寫格式。

當可以精確表達可重複使用的規則,並且可以在副本上進行測試時,請使用 ONLYOFFICE 巨集。巨集系統採用 JavaScript 而非 VBA,附加到文件而非全域可用,並且限制了對文件系統和網路的直接訪問,詳情請參閱ONLYOFFICE 巨集常見問題解答。這種沙盒機制限制了巨集在編輯器之外的存取權限,但巨集仍然可以更改工作簿內容,因此請在運行程式碼之前進行審查和測試。

對於重複匯入,請將腳本儲存在受控範本或文件副本中,並使用簡短的檢查清單:確認活動工作表、更新範圍地址、排除標題和公式、在副本上執行、抽查編輯的字串,並在儲存或共用之前將最終工作簿與原始工作簿進行比較。

留下評論

如何在 LibreOffice 中停用遙測和資料收集

如何在 LibreOffice 中停用遙測和資料收集

了解如何停用 LibreOffice 崩潰報告、線上更新用戶代理程式資料和可選的自動更新檢查,以及如何驗證設定。

How to Install ONLYOFFICE Docs Enterprise with Docker Compose

How to Install ONLYOFFICE Docs Enterprise with Docker Compose

Install ONLYOFFICE Docs Enterprise with the official Docker Compose file, configure JWT and persistent storage, add your license, and verify the service.

如何在 LibreOffice 的尋找和取代功能中使用正規表示式進行進階編輯

如何在 LibreOffice 的尋找和取代功能中使用正規表示式進行進階編輯

學習如何在 LibreOffice 尋找和替換中使用正規表示式來清理文字、擷取和重新排序資料、控制範圍以及選擇更安全的替代方案。

如何使用 ONLYOFFICE 巨集自動清理電子表格

如何使用 ONLYOFFICE 巨集自動清理電子表格

建立一個安全的 ONLYOFFICE JavaScript 巨集,用於清理電子表格文字、保留公式和數字,並在儲存工作簿之前驗證每次變更。

Collabora Online 與 ONLYOFFICE:資源使用與延遲測試

Collabora Online 與 ONLYOFFICE:資源使用與延遲測試

使用官方的配置指南和可重複的測試,比較 Collabora Online 和 ONLYOFFICE Docs 的 CPU、記憶體、開啟時間、協同編輯延遲和保存次數。

如何為 Collabora Online CODE Docker 新增自訂字體

如何為 Collabora Online CODE Docker 新增自訂字體

在 Docker 中為 Collabora Online CODE 新增自訂字體,比較綁定掛載、自訂映像檔和遠端字體配置,然後驗證文件中的字體。

修正 Collabora 線上字體大小下拉選單顯示不正確的問題

修正 Collabora 線上字體大小下拉選單顯示不正確的問題

追蹤 Collabora Online 字體大小下拉選單顯示不完整、拉伸或無回應的問題。重置頁面縮放,手動輸入字體大小,並檢查程式碼版本修復程式。

修正「LibreOffice 需要 Java 執行時間環境 (JRE)」錯誤

修正「LibreOffice 需要 Java 執行時間環境 (JRE)」錯誤

要解決 LibreOffice JRE 警告,請確定是否需要 Java 功能,安裝相容的執行時間環境,並在進階選項中選擇它。

如何將 ONLYOFFICE Docs 與自訂 PHP 應用程式集成

如何將 ONLYOFFICE Docs 與自訂 PHP 應用程式集成

將 ONLYOFFICE Docs 連接到自訂 PHP 應用程序,並具有安全的文件 URL、已簽署的編輯器配置、JavaScript API 和保存回調。

如何設定 Collabora Online 的管理員控制台密碼

如何設定 Collabora Online 的管理員控制台密碼

為 Linux 軟體套件或 CODE Docker 部署設定 Collabora Online 管理控制台密碼,然後驗證登入並保護管理端點。