无意中发现 Foreflight 的飞行记录本 Logbook 支持批量导入导出功能,虽然这个功能隐藏的有点深,但是既然提供了就不妨利用起来。Foreflight Logbook 的批量导入导出功能支持很多流行的电子飞行记录本 app 包括 LogTenPro X、ZuluLog 等。然而我们航校使用的是 Education Training Administration (ETA) 系统,这个系统记录的飞行记录可以是无法直接导入到 Foreflight 的飞行记录本 logbook 里面的。
但是功夫不负有心人啊,我做了一些研究以后发现可以很成功的将 ETA 的飞行数据导入到 Foreflight 的 Logbook 里,但是缺点也很明显,就是需要花费一些人力去录入和核对一些信息(主要是起降数、进近和机场及航路等 ETA 上没有记录的信息)。
虽然 Foreflight logbook 不如一些商业的电子飞行记录本更专业覆盖广,但是其内容已经足够用了。更何况和 Foreflight 结合在一起还能让记录的数据有更多内容。最关键的是它具备生成 8710 表格的功能,这会在输入 IACRA 的时候节省很多时间。
必备的工具和技能
- Foreflight 账号和密码
- ETA 的飞行记录
- 纸本的 Logbook(用于录入和核对起降数、进近和机场及航路等 ETA 上没有记录的信息)
- 一台装有 Microsoft Office 或 LibreOffice 或 OpenOffice 或同功能办公套件的电脑(此文使用 LibreOffice)
- Microsoft Excel(或 LibreOffice Cale)或其他电子表格软件的基本能力
特别要说,此文中用到的方法真的是非常依赖熟练使用 Excel 等电子表格软件的能力,而这也是导入成功的关键。碍于篇幅,此文不会讲述一些基本操作(基本数据操作、拷贝、粘贴、自动填充、基本求和等),对稍微复杂一些的操作我会以 LibreOffice Cale 为例(我没装 Excel)。
主要步骤
第一步 导出 ETA 的飞行数据
推荐分阶段导出,也就是导出一时间段里的飞行数据,处理好导入到 Foreflight Logbook 里,核验成功且正确,然后再导入下一时间段里的数据。导出的时候注意不要有重复数据,这很关键,因为 Foreflight 没有查重的功能。
关于浏览器语言:下面第二步的方法依赖于导出时浏览器的默认语言,这里必须是用的中文。如果浏览器的默认语言不是中文,可以在设置里修改,除了 IE 浏览器以外,无论是 Chrome 还是 Firefox 都可以在浏览器设置里很轻松地修改成默认英文界面和英文显示网页内容。IE 貌似依赖系统设置,需要修改整个操作系统的语言并重启(所以这里极度不推荐用 IE)。
具体操作:第一首先在飞行记录页面点选右上角的“Print with Comments”按钮,之所以这么做是因为练习进近和等待航线(Holding)的细节会写在 Comment 里。之后在弹出的窗口里选最右侧的图标,上面能看到“CSV”字样。最后弹出的小窗口里就会出现CSV文件的内容,只需要直接在这个窗口里右键“另存为”即可(不同的浏览器说法可能不同,但是大同小异)。特别注意保存的文件名,默认是 etaReport,保存时记得修改文件名让自己好理解,并补上后缀名“.csv”。
第二步 编辑导出的数据
用 Excel(或 LibreOffice Cale)或其他电子表格软件打开刚刚保存的 .csv 文件。导入设置可以用默认:
先清理一下数据,可以删掉 A 列到 AA 列,不仅删除里面的内容,列本身也可以删除(因为没啥作用),另外AU列(含)后面的也可以都删掉。当然不删也可以,保存下来意义不是很大而已。为了让整理数据看着工容易可以添加一些表头,在最上面添加一行,对应日期那一列开始在上面添加(每列一个单词):
Date Resource Type Resource PIC/IP Student1 Student2 S/E M/E NT ACT-INST SIM-INST FLIGHT-SIM XC FLIGHT-INST DUAL-REC PIC Flight-Duration
下一步处理日期格式。
在 Date 那一列后面新建一空列,然后选中整个这一空列,右键选择“单元格格式”,改为“日期”,并选格式为“1999-12-31”。
然后在第一个日期数据旁边的空单元格里输入公式(替换A2为左侧日期单元格):
=DATE(RIGHT(A2, 4), MID(A2, 4, 1), LEFT(A2, 2))
输入函数以后回车,会自动转换格式。然后选中改好格式的这个单元格,拖动右下角那个小黑方块一直向下(即“自动填充”功能)。这样这一整列的格式就都改好了。
注意这个函数有个小缺点,如果月份大于等于 10 需要修改成:
=DATE(RIGHT(A2, 4), MID(A2, 4, 2), LEFT(A2, 2))
可能需要多次使用自动填充功能,以便让日期都覆盖到且没有错误。一份大致处理好的导出文件(下文将这份文件称为“导出文件”)效果如下(以我自己仪表等级期间飞行记录举例,已隐去敏感信息):
安全起见,全程随时保存文件(xls 格式即可)!
第三步 下载模板文件并粘贴数据
首先登录Foreflight的web版:https://plan.foreflight.com/,用Foreflight账号密码登录以后,点左侧的“Logbook”,然后在右侧最上面点选“Import”,之后点选“DOWNLOAD FOREFLIGHT TEMPLATE”按钮。会下载一个文件名为 logbook_template.csv 的 CSV 文件(下文会代称“模板文件”),之后的操作将以这个为基准。
用 Excel(或 LibreOffice Cale)或其他电子表格软件打开 logbook_template.csv 文件,依然可以使用默认导入设置即可。这个文件分成两部分,可以看到两条表头。上半部是航空器相关信息(A3单元格写有“Aircraft Table”),下半部则是相应的飞行记录(A13单元格写有“Flight Table”)。我们先处理飞行记录。
将之前处理好的导出文件打开,从日期开始,一列一列按 logbook_template.csv 文件里的表头要求粘贴到飞行记录那部分。这就是为啥第二步里要给导出文件加入表头,这样可以在向模板粘贴时避免出错。这一步需要极度小心,千万不可错漏,否则麻烦会比较大,因为出错很难查出来。
粘贴日期那一列的时候可能会报错,我的方式是,粘贴时右键选粘贴无格式文本,这样就会只粘贴“2020-06-28”这种格式的日期了。
第四步 添加导出文件里缺失的信息
根据 FAR 61.56 和 61.57 的要求,为了保持 current 还需要起落数和夜间起落数的要求,以及仪表进近的要求(仪表等级)等等。而起降机场、航路、起降数等内容在 ETA 导出时是没有一并导出的!
所以这一步就需要很多人工操作来录入,这一步是最费时间的,不过也可以同时核验刚刚第三步里的操作。在 logbook_template.csv 文件的 From 和 To 那两列分别输入起降的机场,由于训练飞行都比较固定,可以只输入 KDAB,然后使用自动填充把其他的都填上。在 Route 那一列可以写具体的航路,也可以只写中间练习起降的机场。

然后根据 logbook_template.csv 里表头的要求输入起落数和夜间起落数(夜间起落 ETA 上是没有的,需要参考纸本的 Logbook)。某次飞行的总起落数其实可以不填,Foreflight会自动计算。
等待航线(Holding)并不需要具体到在哪里做的,比如我 HOLD OMN VOR,HOLD FIX ARSUF这些细节并不需要输入Foreflight,只需要记录等待航线的次数即可(本例是 2 次)。具体在哪里 holding 可以写到 Comment 里。
然后是填写仪表进近,模板文件的表头有 Appoarch 1 到 Approach 6,这表示最多可容纳六种进近。输入仪表进近需要按Foreflight要求的格式填写:次数;类型;跑道;机场;评论
,类型可以是ASR/SRA, GCA, GLS, ILS, ILS CAT II, ILS CAT III, LDA, LOC, LOC BC, MLS, NDB, PAR, RNAV (GPS), RNAV (RNP), SDF, TACAN, VOR中的一种。比较麻烦的是 RNAV 进近,因为要区别普通 RNAV 和 RNP AR 进近所以录入时需要改成“RNAV (GPS)”。
举例来说,假设某次仪表飞行我练习了五个进近,分别是 KDAB ILS 7L 和 LOC 7L,KOMN RNAV 16 Circle 9,两次 KFIN RNAV 11。那么录入时在 Approach 1 那列输入1;ILS;7L;KDAB
,在 Apporach 2 那列里输入1;LOC;7L;KDAB
,在 Apporach 3 那列里输入1;RNAV (GPS);16c9;KOMN;Circle
,最后在 Apporach 4 那列里输入2;RNAV (GPS);11;KFIN
(这里的2表示两次)。
最后在 PilotComments 里面把需要补足的信息填上,我个人还会补上类似 First Solo 这种信息。另外在 checkride 填写是否是考试,如果是则填写“X”或“true”。
还是注意随时保存的问题,中间依然推荐保存成 xls 文件(最好不要在中间保存为 csv 文件)。不过下面最后一步会另存为 .csv 文件。
第五步 处理航空器
导入到Foreflight还需要填写航空器,我的做法是先把ETA导出文件做一次“自动筛选”(LibreOffice Cale的“数据”菜单下选“自动筛选”)。这样点开每一列表头旁边的小黑三角会出现下拉菜单就可以帮我筛选好了,航空器那一列的菜单里也把需要填写的航空器去掉重复。

然后就是在模板文件里手工输入航空器。在这个模板文件的上部可以看到航空器相关的表头,按要求输入即可,可以用“自动填充”功能减少工作量。对于 Cessna 172 来说,它的 TypeCode 填 C172, Category 那里填 Airplane,Class 填 ASEL,Geartype 填 FT,EngineTyep 那列填 Piston。
注意模拟机,是具体区别 AATD 和 BATD 两类的,在 Class 那列需要具体指定,同时 Category 需要写 Simulator。
其实填表说明已经写在了Foreflight Web版的“Need help? Read formatting notes”里面,怎奈这货隐藏的实在太深,打开阅读就能明白好多。

第六步 导入前的核验
导入之前需要核验数据。打开已经填写好数据的模板文件,分别计算每一列的小时数总和,需要与 ETA 这一时间段的统计信息相一致,否则就需要一条一条仔细核对检查。
可以使用求和函数+自动填充。比如我的L列里是所有的小时数,那么在L列的最后一行的下面空单元格里输入=SUM(L53:L155)
(表示计算从 L53 到 L155 单元格所有数的总和函数)。输入完成以后可以横向拖动自动填充,让其他列都自动计算出总和了。
大致整理好的导入数据:

第七步 完成导入
第六步核验没有错误以后,就可以将这个模板文件另存为 .csv 文件,文件名最好是与阶段或时间段相同:比如我从ETA上导出了从2020年1月1日到5月31日的记录,那么我另存为的 .csv 文件名就可以是“20200101-0531.csv”。
回到 Foreflight 的 Web 版,进入Logbook – Import界面。可以把上面的 .csv 文件拖入到右面的虚线框里或按“BROWSE FILE”上传 .csv 文件。之后会有一个预览页面,里面出现了总小时数和总记录数等信息,这是给导入前最后检查的机会,最后再检查一遍是否出错。
确认没有问题以后,按“IMPORT TO LOGBOOK”完成导入。
第八步 如果出错怎么办?
其实导入的时候,会显示 Warning,点蓝色的“Show Details”会写出到底什么地方格式错误。根据 Warning 的提示再做修改,然后再次尝试导入。
导入以后最好回到 Foreflight Logbook 的 Report 页,看看它给出的统计信息与 ETA 的小时数是否一致。特别是仪表飞行和模拟器飞行,变化比较多,比较庞杂。
导入以后发现出错,建议在 Foreflight 的 App 里打开 Logbook,然后再一条条核对。有时候如果错误出在航空器上,还可以在 App 上直接修改航空器相关的信息,这样有时候能解决很多问题。
特别警告,不要重复导入!由于 Foreflight 没有查重的功能,因此如果重复导入,那么总和的小时数就会有很大错误,而且不好改。特别是分阶段导入的时候,边界不要重复,宁肯ETA时少导出一两条,我后期再手工输入都比重复好。
结论
整个操作虽然看上去步骤很多,但是一旦熟练还是很快的。重点是输入绝对不能出错,否则就很麻烦了。我导入仪表等级阶段的所有飞行和模拟机飞行,总耗时没有超过 1 小时。
作为曾经的程序员,我想第三步和第五步可以写个程序自动处理,毕竟处理 CSV 文件,编程并不会太复杂。不过虽然如此,由于 ETA 系统没有导出降落数、起降和航路等关键信息,第四步的人工输入依然不能少。如果ETA的导出数据更全面,那么整个导入操作的时间将大幅缩小到只有十几分钟!
导入以后其实还可以结合 Foreflight 里已经记录下来的 Track,再把 Track 记录添加到 Logbook 的相应飞行上去。这一步只能在 App 上操作。