CSV 导入
逐段导入 FET 导出的列表文件,并有一条首次设置就应正确的排序规则。
FET 可以将其每个列表导出为单独的 CSV 文件。这里读取了其中七个文件,每个文件都导入到数据编辑器自己的部分中,因此您可以一次导入一个列表,而不是一次性导入整个项目。
这七个文件
- 老师 — 老师列表。
- 主题 — 主题列表。
- 教学班 标签 — 标签列表。
- 空间和建筑 — 一个文件涵盖两者,与 FET 中一致。
- 学生 — 年级、组和子组,及其嵌套结构。
- 活动 — 活动列表,这是在生成任何课表之前实际承载学校教学负荷的文件。
- 老师不可用时间 — 这是一个承载规则而非列表的文件。它从时间限制导入,而不是从老师导入。
每个文件都从其自己的部分导入:在数据编辑器中打开该部分并使用其 CSV 导入按钮。文件被读取后,您将看到它将执行的操作,并且在您确认之前不会写入任何内容。
不可用文件是替换,而不是添加
前六个文件会添加缺失的内容,并保留其余内容不变。老师不可用文件行为不同,因为它包含的内容:FET 会写入一个完整的网格 — 每个老师对应每个小时,并标记该老师不能教学的时间。
空单元格不是“没有信息”。它是文件在说这位老师那时有空。因此,导入一个文件会替换其列出的老师的不可用时间,这是实际应用释放的时间段的唯一方法。
文件中未提及的老师将完全不受影响,因此一个涵盖三位老师的文件不会干扰其他三十位老师。
在写入任何内容之前,您会被告知将删除多少限制、将写入多少限制以及有多少老师未受影响。没有撤销功能,因此如果课表很重要,请先进行备份。
课表中尚不存在的老师将被跳过而不是创建 — 此文件用于调整现有人员,而不是引入新人员。
标记可以是偏好而非阻碍
该文件中的单元格不是勾选标记 — 每个单元格都带有一个 0 到 100 的权重,权重改变了标记的含义。
100 表示“不能”。这是普通情况,它成为一个简单的老师不可用规则。
低于 100 表示“宁愿不”。“不可用”规则没有更弱的设置 — 它是绝对的,否则就什么都不是 — 因此带权重的标记以相反的方式记录:作为首选时间段,列出老师的课程可以在何处进行,并带有该权重。这是以积极方式陈述的相同限制。
FET 没有为此提供导入模式。FET 自己的帮助告诉您,当您需要低于 100 的权重时,请使用首选时间。此导入器为您完成了这一步。
您无需在它们之间进行选择,也没有可能出错的设置。如果文件包含任何带权重的单元格,导入器会在写入之前告知您,并列出它找到的权重。
在导入活动之前导入学生
这是唯一值得严格遵循的规则。
如果一个活动命名了一个尚不存在的学生集,该学生集将被扁平化创建 — 并且之后永远不会升级为正确的年级-组-子组结构。
首先导入学生文件,层次结构才能正确建立。如果先导入活动,您将得到一堆扁平的组,它们在列表中看起来正确,但在所有结构重要的地方都会表现错误。之后修复它意味着删除并重新操作。
同样的自动创建也适用于活动行中命名的老师、主题和教学班标签。对于这些来说是无害的 — 老师就是老师 — 这正是学生情况容易让人出错的原因。
提交前预览

选择文件并不会导入它。文件会首先被读取,您将获得一个关于将发生什么的摘要:有多少行被理解,将创建什么,以及关于无法使用的行的任何警告。没有名称的行会被报告并跳过,而不是静默创建空白。
只有在您确认后才会写入任何内容。
关于格式值得了解的事项
您完全不需要准备 FET 自己的导出文件 — 它们会按原样读取。当您手动构建文件或在电子表格中编辑文件时,这些事项很重要。
- 文件名通过后缀匹配。FET 会在导出文件前加上课表名称,因此
myschool_teachers.csv会被识别为老师文件。保留后缀,前缀可以是任何内容。 - 预期存在字节顺序标记。FET 会写入一个,并在读取时将其剥离。没有字节顺序标记保存的文件也正常。
- 分隔符是按文件检测的而不是假定的,因此分号分隔的导出文件与逗号分隔的导出文件一样有效。
- 资源单元格嵌套。
|将一个拆分组件与下一个组件分开,+将组件内的成员分开 — 因此一个单元格可以为一节课命名多位老师,或者每个组件命名不同的老师。 - 主题名称不会在
+处拆分。主题名称中可以合法地包含加号,因此拆分它会截断名称。如果您一直将多个主题放在一个单元格中,这不是该格式支持的功能。 - 空数值单元格表示“无限制”,而不是零。将最小天数单元格留空并不会施加一个“无”的最小值 — 它意味着该限制不存在。
之后您会得到什么
从这些文件构建的课表包含一个真实的活动列表,因此它表现得像一个项目而不是一个图片:持续时间和拆分组件都存在,并且您下载的内容是根据实际数据构建的。