> ## Documentation Index
> Fetch the complete documentation index at: https://docs.kasoftware.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Excel 端口

> Excel 端口使用表模式或範本模式在 Excel 工作表（.xlsx）與 XML 檔案之間轉換資料。

Excel 端口使用指令碼範本在 Excel 工作表（.xlsx）和 XML 檔案之間轉換資料。

## 核心功能

* 在表格（Table）和範本（Template）模式下提供 Excel/XML 的雙向轉換
* 使用 ArcScript 實現動態資料填充的進階範本系統
* 支援多個工作表，並可配置行/列範圍

## 概覽

Excel 端口可以配置為兩種模式：[表模式](#表模式)和[範本模式](#範本模式)。這些模式如下所述。

### 表模式

Excel 端口的預設模式是 **Table**。此模式僅支援將檔案從 XLSX 轉換為 XML。若要從 XML 轉換為 XLSX，請使用 **Template** 模式。

在表模式中，端口會像處理 CSV 檔案一樣處理輸入 XLSX 檔案。生成的輸出 XML 檔案具有以下結構，原始檔案中的每一行（記錄）都會成為工作表包裝元素的子元素，而該包裝元素是根元素 **Items** 的子元素。預設情況下，包裝元素以工作表命名。若要控制包裝元素的名稱，請參閱[根元素名稱](#根元素名稱)。

```xml theme={null}
<Items>
 <Sheet1>
  <Record>
   <field_0></field_0>
   <field_1></field_1>
   <field_2></field_2>
  </Record>
 </Sheet1>
</Items>
```

### 範本模式

在 **Template** 模式中，端口使用範本檔案執行轉換。此範本檔案與輸出檔案格式相匹配：

* 從 XML 轉換為 Excel 時，範本檔案是 Excel 檔案。
* 從 Excel 轉換為 XML 時，範本檔案是 XML 檔案。

這些範本檔案使用 ArcScript，將輸入檔案中的資料動態填充到輸出檔案中。有關更多資訊，請參閱[範本](#範本)部分。

## 端口配置

本節包含所有可配置的端口屬性。

### 設定

#### 配置

*與端口核心配置相關的設定。*

| 設定 | 描述 |
| - | - |
| **端口 Id** | 端口的靜態、唯一識別碼。 |
| **端口型別** | 顯示端口名稱及其用途描述。 |
| **端口描述** | 一個可選欄位，用於提供端口及其在流程中角色的自由格式描述。 |
| **Translation Mode** | 指定使用哪種方法（**Table** 或 **Template**）將輸入檔案轉換為輸出格式。有關更多資訊，請參閱[概覽](#概覽)。 |
| **Column headers** | （Table 模式）勾選此項後，轉換會使用 XLSX 檔案第一行中的值作為子元素的元素名稱。如果未勾選，值元素會被賦予 field\_0、field\_1 等通用名稱。 |
| **Template File** | （Template 模式）作為輸出範本的檔案。資料會根據範本中的指令碼動態新增到檔案中。有關詳細資訊，請參閱[範本](#範本)部分。 |

#### 進階設定

*前面類別中未包含的設定。*

| 設定 | 描述 |
| - | - |
| **工作表名稱** | （Table 模式）要輸出的工作簿工作表名稱清單，以逗號分隔。預設情況下，輸出所有工作表。 |
| **Start Row** | （Table 模式）工作表中用於輸出表的第一行。 |
| **Start Column** | （Table 模式）工作表中用於輸出表的第一列。 |
| **End Column** | （Table 模式）工作表中用於輸出表的最後一列。如果未設定，則將第一行中第一個空單元格前面的列檢測為工作表的結尾。 |
| **DateTime Format** | （Table 模式）Excel 文件中 DateTime 值使用的格式。 |
| **Number Format** | （Table 模式）Excel 文件中數字使用的格式。如果希望以相同方式處理文件中的所有數字，請設定此項。 |
| **根元素名稱** | （Table 模式）在 Table 模式下輸出的每則 XML 訊息中，包裝元素所使用的 XML 元素名稱。支援[宏](#宏)。預設值 `%SheetName%` 以正在處理的工作表為該元素命名。處理多個工作表時，可使用 `%Sequence%` 包含工作表的處理序號。如需詳細資訊，請參閱[根元素名稱](#根元素名稱)。 |
| **Propagate Merged Cell Values** | （Table 模式）在表模式下讀取 Excel 時，勾選此項可將每個合併單元格的值傳播到合併區域中的所有行。此選項可提供更完整的資料，但需要額外讀取 Excel 檔案，這可能會影響大型工作簿的效能。 |
| **本地檔案方案** | 用於為端口輸出的訊息分配檔名的方案。可以在檔名中動態使用宏，以包含識別碼和時間戳等資訊。有關更多資訊，請參閱[宏](#宏)。 |

### 進階頁面

#### 訊息

*訊息設定確定端口如何搜尋訊息並在處理後管理它們。*

**注意：**以下設定已棄用，預設處於隱藏狀態。只有先前已啟用這些設定或將其配置為非預設值的端口才會顯示它們。若要保留成功處理的檔案副本，請在工作流程中右鍵單擊該端口，選擇**顯示成功路徑**，然後將成功路徑連線到 [File 端口](https://docs.kasoftware.com/26.4/self-hosted/zh/connectors/file.md)。

<table><thead><tr><th>設定</th><th>描述</th></tr></thead>
<tbody><tr><td>**儲存到已傳送資料夾**（已棄用）</td>
<td>將端口處理的檔案複製到 Sent 資料夾。預設停用。儲存到 Sent 資料夾中的檔案不受[靜態加密](https://docs.kasoftware.com/26.4/self-hosted/zh/getting-started/administration/settings/encryption-at-rest.md)保護。</td></tr>
<tr><td>**已傳送資料夾方案**（已棄用）</td>
<td>按所選時間間隔對 **Sent** 資料夾中的檔案進行分組。僅在啟用**儲存到已傳送資料夾**時適用。</td></tr></tbody></table>

#### 日誌

*用於管理日誌建立和儲存的設定。*

<table><thead><tr><th>設定</th>
<th>描述</th></tr></thead>
<tbody><tr><td>**日誌級別**</td>
<td>指定要記錄在端口日誌目錄中的資訊型別：
<ul><li>**None** - 不建立任何日誌。</li>
<li>**Error** - 僅當端口遇到錯誤時才建立日誌。</li>
<li>**Warning** - 僅當端口發出警告時才建立日誌。</li>
<li>**Info** - 記錄工作流程的一般資訊，包括任何錯誤和警告（如果適用）。</li>
<li>**Debug** - 記錄成功和失敗工作流程的詳細偵錯資訊。</li>
<li>**Trace** - 記錄成功和失敗工作流程的詳細跟蹤資訊。</li></ul>
\*\*請注意：\*\***Debug** 和 **Trace** 級別的日誌可能會記錄敏感資訊，包括訊息內容和 SSL 憑證。儘管連線屬性（例如密碼）被遮蔽了，但在與您的組織外部共享它們之前，請檢視此級別的日誌以避免洩漏敏感資訊。</td></tr>
<tr><td>**日誌資料夾結構**</td>
<td>指示端口根據選定的時間間隔將日誌資料夾中的檔案分組。例如，**Weekly** 選項指示端口每週建立一個新的子資料夾，並將該周的所有日誌儲存在該資料夾中。空白設定告訴端口將所有日誌直接儲存在日誌資料夾中。對於處理許多交易的端口，使用子資料夾有助於保持日誌的有序性並提高效能。</td></tr>
<tr><td>**保留訊息副本**</td>
<td>指示端口在日誌目錄中儲存最新訊息副本的切換。請注意，端口每個子資料夾只保留一個訊息，並且端口在再次執行時會覆蓋以前儲存的訊息。</td></tr></tbody></table>

#### 其他設定

| 設定 | 描述 |
| - | - |
| **處理延遲** | 放置在 **交易** 索引標籤中的檔案在處理前延遲的時間（以秒為單位）。這是舊版設定。最佳做法是[使用 File 端口](https://docs.kasoftware.com/26.4/self-hosted/zh-Hant/flows/designing-a-flow.md#與本地檔案系統互動)來管理本地檔案系統，而不是使用此設定。 |

#### 其他設定

*特殊設定適用於特定用例。*

<table><thead><tr><th>設定</th>
<th>描述</th></tr></thead>
<tbody><tr><td>**其他設定**</td>
<td>允許在以分號分隔的清單中配置隱藏的端口設定，例如 `setting1=value1;setting2=value2`。正常的端口用例和功能不需要使用這些設定。</td></tr></tbody></table>

### 自動化

*與端口自動處理檔案相關的設定。*

#### 自動化設定

| 設定 | 描述 |
| - | - |
| **傳送** | 到達端口的訊息是否自動進行處理。 |

#### 效能

*與端口資源分配相關的設定。*

<table><thead><tr><th>設定</th>
<th>描述</th></tr></thead>
<tbody><tr><td>**最大工作執行緒數**</td>
<td>此端口上處理檔案時從執行緒池中消耗的最大工作執行緒數。如果設定，則會覆蓋 [進階設定](https://docs.kasoftware.com/26.4/self-hosted/zh/getting-started/administration/settings/advanced-settings.md) 頁面的 [效能設定](https://docs.kasoftware.com/26.4/self-hosted/zh/getting-started/administration/settings/performance-settings.md) 部分的預設設定。</td></tr>
<tr><td>**最大檔案數**</td>
<td>分配給端口的每個執行緒傳送的最大檔案數。如果設定，則會覆蓋 [進階設定](https://docs.kasoftware.com/26.4/self-hosted/zh/getting-started/administration/settings/advanced-settings.md) 頁面的 [效能設定](https://docs.kasoftware.com/26.4/self-hosted/zh/getting-started/administration/settings/performance-settings.md) 部分的預設設定。</td></tr></tbody></table>

### 警示

*與配置通知相關的設定。*

在執行服務級別協議 (SLA) 之前，需要設定電子郵件通知以接收通知。預設情況下，知行之桥 使用 [通知](https://docs.kasoftware.com/26.4/self-hosted/zh/getting-started/administration/settings/alerts.md) 索引標籤上的全域設定。要為此端口使用其他設定，請啟用 **覆蓋全域設定**。

預設情況下，錯誤通知處於啟用狀態，這意味著每當出現錯誤時都會傳送電子郵件。要關閉錯誤通知，請取消選中 **啟用** 核取方塊。

輸入 **主題**（必填）。勾選**允許在主題中使用 ArcScript**，即可在**主題**欄位中使用 ArcScript。選中後會顯示 **ArcScript 編輯器**按鈕（![ArcScript 編輯器按鈕](https://docs.kasoftware.com/26.4/images/rest_arcscript_editor.png)）。

（可選）輸入以逗號分隔的**收件人**電子郵件地址清單。

### SLA

*與配置服務級別協議 (SLA) 相關的設定。*

SLA 允許配置預期流程中端口傳送或接收的資料量，並設定預期達到該資料量的時間範圍。當 SLA 未達到時，知行之桥 會傳送電子郵件警告使用者，並將 SLA 標記為 *存在風險*，這意味著如果 SLA 未能儘快達到，則會被標記為 *已違反*。這讓使用者有機會介入並確定 SLA 未達到的原因，並採取適當的措施。如果在風險時間段結束時仍未達到 SLA，則會將 SLA 標記為已違反，並再次通知使用者。

SLA 轉換為 *存在風險* 或 *已違反* 狀態時，也會寫入[應用程式日誌](https://docs.kasoftware.com/26.4/self-hosted/zh/getting-started/administration/activity.md#应用程序日志)，這意味著應用程式效能監控 (APM) 和日誌擷取工具也可以針對這些狀態發出警示。

要定義 SLA，請啟用 **預期資料量**，然後點選 **設定** 索引標籤。

![SLA Empty](https://docs.kasoftware.com/26.4/images/sla_empty.png)
<ul><li>如果端口具有單獨的傳送和接收操作，請使用選項按鈕指定 SLA 適用的方向。</li>
<li>在視窗的 **預計至少** 部分中：
<ul><li>設定預計處理的最小交易數量（交易量）</li>
<li>使用 **每個** 欄位指定時間範圍</li>
<li>指示 SLA 生效的時間。如果選擇 **開始於**，請填寫日期和時間欄位。</li>
<li>勾選希望 SLA 生效的星期幾對應的核取方塊。如有必要，請使用下拉功能表選擇 **每天**。</li></ul></li>
<li>在視窗的 **將狀態設定為“有風險”** 部分中，指定應將 SLA 標記為有風險的時間。
<ul><li>預設情況下，只有在違反 SLA 的情況下才會傳送通知。要更改此設定，請勾選 **傳送“有風險”通知**。</li></ul></li></ul>

以下範例顯示了為端口配置的 SLA，該端口預計在週一至週五每天接收 1000 個檔案。如果尚未收到 1000 個檔案，則會在時間段結束前 1 小時傳送風險通知。

![SLA Configuration Example](https://docs.kasoftware.com/26.4/images/sla_defined.png)

> [!NOTE]
>
> 如果有必要，可以關閉 SLA 通知。這在維護視窗期間非常有用。點選導覽列上的 **設定**，然後跳轉到 **通知 > 通用通知**。點選平板和鉛筆圖示進行編輯，並取消勾選 **SLA 通知** 設定。

## 範本

### XML 到 Excel

下面的 XML 檔案片段在 `/Items/Orders` 路徑下包含一組元素。

```xml theme={null}
<Items>
    <Orders>
        <OrderNo>PO0012345</OrderNo>
        <Customer>Teddy</Customer>
        <Date>04/19/2023</Date>
        <SubTotal>23.98</SubTotal>
        <Items>
            <Name>Teddy Bear</Name>
            <Cost>14.99</Cost>
            <Desc>Brown</Desc>
        </Items>
        <Items>
            <Name>Truck</Name>
            <Cost>8.99</Cost>
            <Desc>Red</Desc>
        </Items>
    </Orders>
</Items>
```

要將此 XML 檔案轉換為 XLSX，必須建立一個 Excel 範本。下圖顯示了一個使用 *xmlDOMSearch* 和 *xpath* 迴圈遍歷 XML 檔案元素的 Excel 範本範例：

![簡單的範本](https://mintcdn.com/qiao/V5zXPPmcRAz2rNUe/26.4/images/simple_excel_template.png?fit=max\&auto=format\&n=V5zXPPmcRAz2rNUe\&q=85\&s=333d7ae70047eea92d37dcdb6d531f44)

每個 Excel 範本都必須包含以下元素，如上例所示：

* 靜態列標題。在上例中為 **Order Detail**。
* Excel 批註中的指令碼。此指令碼應使用 [xmlDOMSearch](#xmldomsearch) 操作，在指定 XPath 處迴圈遍歷輸入 XML。在上例中，它包含在 **arc:call** 操作中。
* Excel 單元格中的指令碼。此指令碼應使用 [xpath 格式化器](#xpath-格式化器) 從給定 xpath 讀取 XML 中的值。此 xpath 相對於 *xmlDOMSearch* 操作中指定的 xpath。

下面描述此範例中 *xmlDOMSearch* 操作和 *xpath* 格式化器的詳細資訊。

#### xmlDOMSearch

*xmlDOMSearch* 需要兩個參數：

| 參數 | 描述 |
| - | - |
| **URI** | 要解析的 XML 檔案的資源路徑。`[filepath]` 屬性會解析為端口的輸入 XML 檔案，URI 幾乎總是應設定為此值。在上例中，檔案路徑使用 *urlencode* 格式化器進行 URL 編碼，以確保檔案路徑中的特殊字元不會阻止端口讀取檔案：`[filepath \| urlencode]` |
| **xpath** | 文件中要迴圈遍歷的 XML 路徑。該操作會針對指定 xpath 的每次出現進行迴圈。例如，使用 xpath `/Items/Orders` 時，根 *Items* 元素的每個子 *Orders* 元素都會在生成的 Excel 檔案中產生一組新的輸出。 |

#### xpath 格式化器

帶有 *xmlDOMSearch* 操作的 Excel 批註圍繞一塊單元格，這些單元格透過 *xpath* 格式化器引用輸入 XML。*xpath* 格式化器從輸入 XML 中指定的 xpath 讀取值。

> [!NOTE]
>
> 此 *xpath* 相對於作為參數提供給 *xmlDOMSearch* 操作的路徑。

在上例中，第一個單元格使用 `[xpath("OrderNo")]` 填充。由於此 xpath 是相對路徑，因此該單元格會填充輸入 XML 中以下路徑的值：`/Items/Orders/OrderNo`。

如果 *xmlDOMSearch* 操作迴圈多次（即找到該操作 xpath 參數的多個例項），則 Excel 批註之間的單元格塊會重複。新單元格會垂直新增，因此在上例中，第二個 *OrderNo* 單元格會直接位於第一個 *Notes* 單元格下方。

### Excel 到 XML

要從 XLSX 轉換為 XML 檔案，必須使用 ArcScript 命令建立自定義 XML 範本。由於 XML 不支援與 Excel 檔案相同的指令碼功能，因此從 XLSX 轉換為 XML 的結構和格式與從 XML 轉換為 Excel 不同。

> [!NOTE]
>
> 由於潛在的輸入和輸出結構範圍很廣，因此沒有適用於所有轉換需求的通用解決方案。下面顯示的範例範本只是眾多可能方案之一。你需要根據自己的需求建立範本。

此範例範本結合使用標準 XML 語法和 ArcScript，從輸入 Excel 檔案讀取、處理並轉換資料。

下面的 `arc:set` 行指定檔案位置以及用於建立該檔案的 Excel 版本。

```xml theme={null}
<!-- Read Excel -->
<arc:set attr="xml.file" value="[FilePath]" />
<arc:set attr="xml.version" value="2007" />
```

下面的部分指定轉換參數，並將標題對映為標準 XML 格式。

參數 `[_value | toalphanum | replace(' ','')]` 表示 `arc:set` 命令應從 Excel 檔案解析標題名稱，將其轉換為字母數字格式，刪除空格，並將其指定為 XML 檔案中的標題。

```xml theme={null}
<!-- Always use first sheet-->
<arc:call op="excelListSheets" in ="xml" out="sheet">
  <arc:set attr="xml.sheet" value="[sheet.sheet]" />
  <arc:break />
</arc:call>

<!-- read the headers into an array-->
<arc:set attr="xml.map:headers" value="A1:*1" />
<arc:call op="excelGet" in="xml" out="header">
  <arc:enum attr="header.headers#">
    <arc:set attr="data.headernames#" value="[_value | toalphanum | replace(' ','')]" />
  </arc:enum>
</arc:call>

<arc:set attr="_log.info" value="[data.headernames#1]" />

<arc:enum range="A..Z">
  <arc:set attr="tmp.cells#" value="[_value]" />
</arc:enum>
```

下面的部分處理剩餘資料，並根據指定結構構建資料列。

```xml theme={null}
<!-- read the remaining cells -->
<arc:enum attr="data.headernames#">
  <arc:set attr="xml.map:[_value]" value="[tmp.cells#[_index]]2:[tmp.cells#[_index]]*" />
</arc:enum>

<!-- build the columns -->
<arc:call op="excelGet" in="xml" out="cols">
  <arc:map from="cols" to="data" map="*=*" />
</arc:call>

<Items>
  <arc:enum attr="data.[data.headernames#1]#"><arc:set attr="tmp.colIndex" value="[_index]" />
    <Record>
      <arc:enum attr="data.headernames#">
        <[_value]>[data.[_value]#[tmp.colIndex] | def]</[_value]>
      </arc:enum>
    </Record>
  </arc:enum>
</Items>
```

## 根元素名稱

在[表模式](#表模式)中，端口會為處理的每個工作表輸出一則 XML 訊息。預設情況下，每個工作表的資料列會包裝在以該工作表命名的元素中。對於名為 `Sheet1` 的工作表，輸出如下所示：

```xml theme={null}
<Items>
  <Sheet1>
    <Record>
      <field_0></field_0>
    </Record>
  </Sheet1>
</Items>
```

> [!NOTE]
>
> 如果工作表名稱在不同檔案之間發生變化，包裝元素也會隨之變化。此時，參照該工作表名稱的下游 [XML Map](https://docs.kasoftware.com/26.4/self-hosted/zh-Hant/connectors/xml-map/xml-map.md) 端口將無法比對，除非在對應中使用萬用字元。

使用**根元素名稱**設定可控制此包裝元素的名稱。該設定預設為 `%SheetName%`，即如上所示以正在處理的工作表為元素命名。當工作簿包含多個工作表時，端口會為每個工作表輸出一則訊息。使用 `%Sequence%` 可在元素名稱中包含工作表的處理序號，使每則訊息都有不同的包裝元素。例如，`Sheet_%Sequence%` 會為處理的第一個工作表產生 `Sheet_1`，為第二個工作表產生 `Sheet_2`，依此類推。

> [!NOTE]
>
> 元素名稱必須是有效的 XML 名稱。宏求值後，端口會自動將結果中的所有無效字元取代為底線（`_`），且不會給出提示。例如，`Sales Data` 會變為 `Sales_Data`。

### 使用靜態名稱

輸入固定值，可使每則輸出訊息都使用相同的包裝元素，而不受工作表名稱影響。例如，對於名為 `Sheet1` 的工作表，並將**根元素名稱**設定為 `Data` 時，輸出如下：

```xml theme={null}
<Items>
  <Data>
    <Record>
      <field_0></field_0>
    </Record>
  </Data>
</Items>
```

當您只處理工作簿的第一個工作表，或者工作表名稱無法預測時，這種方式非常實用。

## 宏

在檔案命名策略中使用宏可以提高組織效率和對資料的上下文理解。透過將宏合併到檔名中，可以動態地包含相關資訊，例如識別碼、時間戳和訊息頭資訊，從而為每個檔案提供有價值的上下文。這有助於確保檔名反映對組織重要的詳細資訊。

知行之橋 支援這些宏，它們都使用以下語法：`%Macro%`。

<table><thead><tr><th>宏</th><th>描述</th></tr></thead>
<tbody><tr><td>ConnectorID</td><td>替換為端口的 ConnectorID。</td></tr>
<tr><td>ConnectorName</td><td>替換為端口名稱。可用於在檔名或路徑中包含連線名稱，例如按生成備份檔案的資料庫連線標記檔案。</td></tr>
<tr><td>Ext</td><td>替換為端口當前正在處理的檔案的副檔名。</td></tr>
<tr><td>Filename</td><td>替換為端口當前正在處理的檔案的檔名（包括副檔名）。</td></tr>
<tr><td>FilenameNoExt</td><td>替換為端口當前正在處理的檔案的檔名（不帶副檔名）。</td></tr>
<tr><td>MessageId</td><td>計算端口輸出的訊息的 MessageId。</td></tr>
<tr><td>RegexFilename:*pattern*</td><td>將規則運算式模式應用於端口當前正在處理的檔案的檔名。</td></tr>
<tr><td>Header:*headername*</td><td>替換為端口正在處理的當前訊息的目標訊息頭（`headername`）的值。</td></tr>
<tr><td>LongDate</td><td>以常規格式計算系統的當前日期時間（例如，2024 年 1 月 24 日星期三）。</td></tr>
<tr><td>ShortDate</td><td>以 yyyy-MM-dd 格式計算系統的當前日期時間（例如 2024-01-24）。</td></tr>
<tr><td>DateFormat:*format*</td><td>以指定格式（`format`）計算系統的當前日期時間。有關可用的日期時間格式，請參閱 [範例日期格式](https://docs.kasoftware.com/26.4/self-hosted/zh/scripting/value-formatters/date-formatters.md#date-formats-with-literal-characters)。</td></tr>
<tr><td>Vault:*vaultitem*</td><td>計算指定保管庫專案的值。</td></tr></tbody></table>

### 範例

某些宏（例如 %Ext% 和 %ShortDate%）不需要參數，但其他宏則需要。所有帶有參數的宏都使用以下語法：`%Macro:argument%`

以下是帶有參數的宏的一些範例：

<ul><li>%Header:headername%：其中 `headername` 是訊息上訊息頭的名稱。</li>
<li>%Header:mycustomheader% 解析為輸入訊息上設定的 `mycustomheader` 訊息頭的值。</li>
<li>%Header:ponum% 解析為輸入訊息上設定的 `ponum` 訊息頭的值。</li>
<li>%RegexFilename:pattern%：其中 `pattern` 是規則運算式模式。例如，`%RegexFilename:^([\w][A-Za-z]+)%` 匹配並解析為檔名中的第一個單詞，並且不區分大小寫（`test_file.xml` 解析為 `test`）。</li>
<li>%Vault:vaultitem%：其中 `vaultitem` 是 [vault](https://docs.kasoftware.com/26.4/self-hosted/zh/getting-started/administration/settings/global-settings-vault.md) 中專案的名稱。例如，`%Vault:companyname%` 解析為儲存在保管庫中的 `companyname` 項的值。</li>
<li>%DateFormat:format%：其中 `format` 是可接受的日期格式（有關詳細資訊，請參閱 [範例日期格式](https://docs.kasoftware.com/26.4/self-hosted/zh/scripting/value-formatters/date-formatters.md#sample-date-formats)）。例如，`%DateFormat:yyyy-MM-dd-HH-mm-ss-fff%` 解析為檔案上的日期和時間戳。</li></ul>

還可以建立更復雜的宏，如以下範例所示：

<ul><li>將多個宏組合在一個檔名中：`%DateFormat:yyyy-MM-dd-HH-mm-ss-fff%%EXT%`</li>
<li>包括宏之外的文字：`MyFile_%DateFormat:yyyy-MM-dd-HH-mm-ss-fff%`</li>
<li>在宏中包含文字：`%DateFormat:'DateProcessed-'yyyy-MM-dd_'TimeProcessed-'HH-mm-ss%`</li></ul>

## Excel 運算器

除了 知行之橋 提供的操作之外，端口還可以提供將功能擴充套件到 ArcScript 的操作。

這些端口操作可以像任何其他 ArcScript 操作一樣呼叫，但有兩個細節例外：

1. 它們必須透過 `connector.rsc` 端點呼叫。
2. 它們必須包含身分驗證權杖。

例如，使用這兩條規則呼叫端口操作可能如下所示：

```xml theme={null}
<arc:set attr="in.myInput" value="myvalue" />
<arc:call op="connector.rsc/opName" authtoken="admin:1j9P8v8b9K0x6g5R5t7k" in="in" out="out">
  <!-- handle output from the op here -->
</arc:call>
```

下面列出了 Excel 端口功能特定的操作。

### excelClose

關閉 Excel 連線。

#### 可選參數

* **handle**：Excel 檔案的控制代碼。

#### 輸出屬性

* **success**：如果連線成功關閉，則為 True。

### excelGet

查詢指定的 Excel 工作表。

#### 必需參數

* **sheet**：Excel 工作表的名稱。

#### 可選參數

* **version**：正在使用的 Excel 版本。預設值為 AUTO。僅當使用舊版 Excel 時才需要選擇其他版本。
* **file**：Excel 工作簿的路徑。
* **handle**：Excel 檔案的控制代碼。
* **map:\***：這組輸入包含屬性名稱與要從電子表格中檢索其值的單元格名稱之間的對映。例如，屬性名稱 map:MyValue 的值為 C1 時，會推送一個名為 MyValue 的屬性，其值為工作表中 C1 單元格中的值。可以指定單元格名稱範圍以檢索一系列單元格值。

#### 輸出屬性

* **\***：取決於工作表內容和指定的查詢。如果存在列標題，則會用於命名輸出屬性。

### excelListSheets

列出指定 Excel 工作簿中的工作表。

#### 可選參數

* **version**：正在使用的 Excel 版本。預設值為 AUTO。僅當使用舊版 Excel 時才需要選擇其他版本。
* **file**：Excel 工作簿的路徑。
* **handle**：Excel 檔案的控制代碼。

#### 輸出屬性

* **isHidden**：如果工作表在 Excel 中隱藏，則傳回 true。
* **sheet**：Excel 工作表的名稱。 Note that the name ends with \$. This is not required when specifying worksheet names to other operations.

### excelOpen

開啟現有 Excel 工作簿。

#### 必需參數

* **file**：Excel 工作簿的路徑。

#### 可選參數

* **version**：正在使用的 Excel 版本。預設值為 AUTO。僅當使用舊版 Excel 時才需要選擇其他版本。

#### 輸出屬性

* **handle**：用於執行其他操作的控制代碼。


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.