# 资源访问函数 / 文件访问函数

## `exportFile2(_type, alias, file_name, data, include_header, include_index, sheet, range)`

声明：function

将数据导出到指定Sheet、指定数据位置Range的excel文件，仅支持Type类型为ftxls()的，为了兼容其他类型，如果输入的类型是非ftxls()的，则执行exportfile导出数据且无法指定Sheet和Range。注：导出时对应的excel文件需要关闭

<!-- tags: 写入 保存 -->

| 参数             | 类型   | 说明                                                               |
| ---------------- | ------ | ------------------------------------------------------------------ |
| `_type`          |        | 整数类型。参考导入导出类型函数。                                   |
| `alias`          | string | 字符串类型。参考目录别名。                                         |
| `file_name`      | string | 字符串类型。文件名称。                                             |
| `data`           |        | 数据，需要导出的数据。                                             |
| `include_header` | bool   | 布尔类型。为真时导出的文件包含字段头部信息。缺省时候为真。         |
| `include_index`  | bool   | 布尔类型。为真时导出的文件包含数组下标信息。缺省时候为假。         |
| `sheet`          | string | 字符串类型，指定Sheet。                                            |
| `range`          | string | 字符串类型，指定单元格，如："A1"表示要把数据导出到A1开始的单元格。 |

返回：integer|string

### 示例

范例01：导出到指定工作表和单元格

```tsl
// 导出10 * 5全1矩阵，到C: \\test.xlsx 文件的Sheet3，C2单元格。
data := ones(10, 5);
ret := exportFile2(ftXls(), "", "C:\\test.xlsx", data, 1, 0, "Sheet3", "C2");
return ret;
// 输出：1（表示数据导出成功，可以在 C 盘看到 test.xlsx 文件）
```

此示例需在提供 `exportFile2` 的 Windows/.NET 运行环境中执行，并确保目标 Excel 文件已关闭。本地 `.tsl` 脚本不使用 `rdo2` 包装调用。

## `ftCsVne()`

声明：function

逗号分割文件类型，输出结果禁用1E20等类型

返回：integer

### 示例

```tsl
return ftCsVne();
// 输出：9
```

## `importFile2(_type, alias, file_name, data, include_header, include_index, force_single, sheet, range)`

声明：function

导入excel中指定Sheet的内容，可选择指定数据范围Range。仅支持Type类型为ftxls()的，为了兼容其他类型，如果输入的类型是非ftxls()的，则执行importfile导入数据且无法指定数据位置Range

| 参数             | 类型    | 说明                                                                                              |
| ---------------- | ------- | ------------------------------------------------------------------------------------------------- |
| `_type`          | integer | 整数类型。参考导入导出类型函数。                                                                  |
| `alias`          | string  | 字符串类型。参考目录别名。                                                                        |
| `file_name`      | string  | 字符串类型。文件名称。                                                                            |
| `data`           | bool    | 变参返回，存贮导入的数据。当导入成功的时候，数据将存放在Data。                                    |
| `include_header` | bool    | 布尔类型。为真时认为导入的文件包含字段头部信息。缺省时候为真。                                    |
| `include_index`  | bool    | 布尔类型。为真时认为导入的文件包含数组下标信息。缺省时候为假。                                    |
| `force_single`   | bool    | 布尔类型。为真时认为导入的文件是一个一维数组。缺省时候为假。                                      |
| `sheet`          | string  | 字符串类型，指定Sheet。                                                                           |
| `range`          | string  | 字符串类型，指定单元格范围，如果为空导入Sheet的所有数据，非空则必须为excel的Range，如："A1:E13"。 |

返回：bool

### 示例

范例01：导入指定工作表中的单元格范围

```tsl
// 导入"C:\\test.xlsx"文件中的Sheet3的"C2:E5"数据，包含字段名称。
ret := importFile2(ftXls(), "", "C:\\test.xlsx", data, 1, 0, 0, "Sheet3", "C2:E5");
if ret then
    result := data;
else
    result := "导入失败";
return result;
```

此示例需在提供 `importFile2` 的 Windows/.NET 运行环境中执行，并确保示例文件存在。本地 `.tsl` 脚本不使用 `rdo2` 包装调用。

## `readExcelSheets(alias, file_name, sheets_name, use_ole)`

声明：function

从Excel文件中读取Sheets列表

<!-- tags: 读取 获取 -->

| 参数          | 类型       | 说明                                                                             |
| ------------- | ---------- | -------------------------------------------------------------------------------- |
| `alias`       | string     | 字符串类型。参考目录别名。                                                       |
| `file_name`   | string     | 字符串类型。文件名称。                                                           |
| `sheets_name` | array      | 返回值。存贮读出的SHEETS名称，存贮为一个一维字符串数组。                         |
| `use_ole`     | bool=false | 布尔型。是否使用Excel来读取，默认直接采用读文件的方式。设置为真则要求安装Excel。 |

返回：bool

### 示例

范例01：读取本地 Excel 文件的工作表名称

```tsl
readExcelSheets('', 'd:\\test\\test.xls', r, 0);
return r;
// 输出：array("Sheet1","Sheet2","Sheet3")
```

此示例需在提供 `readExcelSheets` 的 Windows/.NET 运行环境中执行，并确保示例文件存在。本地 `.tsl` 脚本不使用 `rdo2` 包装调用。

## `writeToLog(dir, sub_dir, value)`

声明：function

向虚拟目录写日志。其中Dir为虚拟目录名，SubDir为文件名，成功写入日志后，会生成命名为'SubDir'+写入日期+'.log'的TXT文件，文件内容为写入时间->Value。用户使用其应当申请好服务器权限。 20250512升级：优化多个线程同时写入时存在丢失情况： 1、增加重试次数，重试20次间隔0.5秒。 2、增加返回内容。 注意：在极端情况下（超多多线程下同时写入）可能还会存在写入失败情况，此时可通过返回结果继续处理

<!-- tags: 写入 保存 TXT -->

| 参数      | 类型   | 说明                                                                                                                             |
| --------- | ------ | -------------------------------------------------------------------------------------------------------------------------------- |
| `dir`     | string | 字符串，虚拟目录别名，一般在安装目录\Tinysoft\Analyse.NET\Plugin\filemgr.ini中进行配置。如果没有配置别名，该参数赋值为空字符""。 |
| `sub_dir` | string | 字符串，文件名                                                                                                                   |
| `value`   | string | 字符串，需要写入日志的内容                                                                                                       |

返回：any
