在统计数据的时候,发现需要写个脚本去操作excel,于是找到了python,python大法好啊,哈哈,下面记录下过程。

python操作excel

我最先google了一下,发现有一个库xlrd可以操作excel,但是,这个库有个局限性,就是最多只能操作256列,对于超过256列的表格就不能处理了,于是发现了一个新的库openpyxl,下面我将讲述一个这个库的用法!

安装openpyxl

1
$ sudo pip install openpyxl

将文本数据转入到excel中

说一下的我的需求吧:
mainon.tem文件中有如下数据:

最终excel中展示的数据如下:

为了完成我的目标,需要下面脚本处理:

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
# -- coding: UTF-8
import datetime
import time
import os
import sys
from openpyxl import Workbook
#文本转换成xls的函数,filename 表示一个要被转换的txt文本,xlsname 表示转换后的文件名
def txt2xls(filename,xlsname):
print 'converting xls ... '
f = open(filename) #打开txt文本进行读取
y = 2 #在excel开始写的位置(y)
wb = Workbook()
ws3 = wb.create_sheet(title="Sheet Data")
ws3.cell(column=1, row=1, value="时间(s)")
ws3.cell(column=1, row=2, value="透明大页容量")
ws3.cell(column=1, row=3, value="memory free")
while True: #循环,读取文本里面的所有内容
line_time = f.readline()
if not line_time: #如果没有内容,则退出循环
break
line_memoryfree = f.readline()
line_hugepage = f.readline()
ws3.cell(column=y, row=1, value="%s" % line_time)
ws3.cell(column=y, row=2, value="%s" % line_memoryfree)
ws3.cell(column=y, row=3, value="%s" % line_hugepage)
y = y + 1
f.close()
wb.save(filename = xlsname + ".xlsx")
if __name__ == "__main__":
filename = sys.argv[1]
xlsname = sys.argv[2]
txt2xls(filename,xlsname)

对于以上代码,需要说明的步骤是:

  1. 创建工作簿wb = Workbook()
  2. 创建Sheetws3 = wb.create_sheet(title="Sheet Data")
  3. 在sheet指定位置操作数据ws3.cell(column=1, row=1, value="时间(s)")
  4. 保存工作簿wb.save(filename = xlsname + ".xlsx")

哈哈,就这样提高了效率!


参考资料:

  1. http://openpyxl.readthedocs.org/