> ## 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.

# excelOpen

> 打开 Excel 工作簿并返回可供其他 Excel 操作使用的句柄。

为现有 Excel 工作簿创建可读句柄。

## 必需的参数

* **file**: Excel 工作簿在磁盘上的完整路径，包括文件名。

## 可选的参数

* **version**: 目标工作簿的 Excel 版本。 允许的值为`AUTO`、`95`、`97-2003`、`2007`。 默认为`自动`。

## 输出属性

* **handle**: 对 Excel 数据的可读句柄引用。 该句柄可供后续操作使用，如下例所示。

## 示例

此示例打开磁盘上的现有 Excel 工作簿，使用 [excelGet](./op-excel-get) 操作从特定单元格读取数据，关闭 Excel 工作簿，并将该数据作为新的输出文件推送。

```xml theme={null}
<!-- Creating the input item for the operation and passing it in -->
<arc:set attr="excel.file" value="C:\Temp\movies.xlsx" />
<arc:call op="excelOpen" in="excel" out="result" >
  <!-- Resolving the handle from excelOpen to use in excelGet -->
  <arc:set attr="get.handle" value="[result.handle]" />
  <arc:set attr="get.sheet" value="film" />
  <arc:set attr="get.version" value="2007" />
  <arc:set attr="get.map:favoritemovie" value="A2" />
  <arc:set attr="get.map:favoritemovieyear" value="B2" />
  <!-- Calling excelGet inside excelOpen to use the handle -->
  <arc:call op="excelGet" in="get" out="out">
    <!-- Creating some output data and file from the data read from the excel sheet -->
    <arc:set attr="output.data" value="My favorite movie is [out.favoritemovie] and it came out in [out.favoritemovieyear]." />
    <arc:set attr="output.filename" value="results.txt" />
    <!-- Using the arc:finally keyword to execute the closing of the handle last -->
    <arc:finally>
      <!-- Calling excelClose to close the handle -->
      <arc:call op="excelClose" in="excel" out="close">
        <!-- Check to ensure the handle was closed and throw an error if it was not -->
        <arc:exists attr="close.success" >
          <arc:else>
            <arc:throw code="CloseFailed" desc="The handle was not closed successfully." />
          </arc:else>
        </arc:exists>
      </arc:call>
    </arc:finally>
  </arc:call>
</arc:call>
<!-- Push the output item out as a file -->
<arc:push item="output" />
```

<Note>当使用excelOpen时，请务必在脚本末尾使用[excelClose](./op-excel-close)操作关闭句柄，以避免通过打开的句柄泄漏内存。</Note>
