Problem: 纯文本文件 student.txt为学生信息, 里面的内容(包括花括号)如下所示:

{
    "1":["张三",150,120,100],
    "2":["李四",90,99,95],
    "3":["王五",60,66,68]
}

请将上述内容写到 student.xls 文件中,如下图所示:

Solution: Write Data to Excel, Python:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#!/usr/bin/env python
# -*- encoding: utf-8 -*-
# @Date : 2015-03-23 16:15:47
# @Author : NSSimacer
# @Version : 1.0
import sys
import json
import xlsxwriter
# 设置系统编码为 UTF-8,处理中文乱码问题
reload(sys)
sys.setdefaultencoding('utf-8')
def write_data_to_excel(f_path):
'''
把数据写入 xlsx 文件
'''
json_content = load_data_as_json(f_path)
workbook = xlsxwriter.Workbook('students.xlsx') # 新建一个 xlsx 文件
worksheet = workbook.add_worksheet('student') # 添加 xlsx 表单
for i in xrange(len(json_content)): # 把 json 数据写入表单单元格中
for j, item in enumerate(json_content[str(i + 1)]):
worksheet.write(i, 0, i + 1)
worksheet.write(i, j + 1, item)
workbook.close()
def load_data_as_json(f_path):
'''
将载入的 txt 文件转换成 json 数据格式
'''
with open(f_path, 'rb') as f:
content = f.read()
return json.loads(content)
if __name__ == '__main__':
f_path = 'students.txt'
write_data_to_excel(f_path)

主要目的是练习 Python 对 Excel 文件的读写操作(此题只涉及写操作),使用的第三方库是 XlsxWriter,同时用到的知识有 Python 中的 json 数据格式

首先载入 students.txt 文件,把 txt 内容转换成 json 格式 json.loads(self, args),然后取出 json 格式中的数据,依次填入 Excel 表格中相应单元格里 worksheet.write(self, args),最后关闭 Excel 文件 workbook.close(self, args)。在此之前,需要先初始化一个 Excel 表格 xlsxwriter.Workbook(self, args),添加一个表单 workbook.add_worksheet(self, args)

当然,操作 Excel 也可以选用 XlsxWriter 以外的其他第三方库。

题目来源:Python 练习册,每天一个小程序 THX!