Skip to content

Instantly share code, notes, and snippets.

@singleghost
Last active October 4, 2017 06:59
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save singleghost/14c9e1418a9dfb7a0fe3dfc6bdc6256c to your computer and use it in GitHub Desktop.
Save singleghost/14c9e1418a9dfb7a0fe3dfc6bdc6256c to your computer and use it in GitHub Desktop.
毕业自审表自动填写程序

毕业自审表自动填写小程序使用说明

环境:

python3、pip3、Excel

使用步骤(Mac或 Linux)

  1. 安装必要的 python 库

    pip3 install xlwings
    pip3 install pyquery
  2. 打开软件工程毕业自审表,并确保当前工作表是 Sheet1

  3. 浏览器使用 safari,(chrome 保存页面有点问题,其他浏览器没测试过)登录进入教务网查看成绩的页面(考试和成绩—>成绩查询—>在校成绩查询),右键另存为,假设保存的文件名为course_grade.html

  4. 运行小程序,第一个参数为上一步保存的文件的路径(绝对路径或者相对路径都可以)

    python3 ./parse_course_grade.py /path/to/course_grade.html
    
  5. 大功告成了,去看看你的 Excel 里面是否填上了正确的数值。

使用步骤(Windows)

和上面的方法类似,但可能需要做些改动。

#!/usr/bin/env python3
from pyquery import PyQuery as pq
import xlwings as xw
import sys
if len(sys.argv) < 2:
print("Usage: {} <your-download-file-name>".format(sys.argv[0]))
sys.exit(1)
f = open(sys.argv[1], "r", encoding="gb2312")
html=f.read()
doc = pq(html)
maps = {}
for tr in doc('#DataGrid1>tr').items():
if tr.attr.class_ == 'datagridhead':
continue
code = tr('td').eq(0).text().split('-')[3]
grade = tr('td').eq(2).text()
print("选课课号:{}, 成绩:{}".format(code, grade))
maps[code] = grade
#print (maps)
# print (xw.Range('A5:A98').value)
i = 0
for row in xw.Range('A5:A98').value:
if row and type(row) == str and row.isalnum() and len(row) == 8:
xw.Range('D{}'.format(i + 5)).value = maps.get(row)
i += 1
print("done!")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment