python excel处理成绩_python处理excel(一):读

功能:读取一个excel里的第2个sheet,将该sheet的内容全部输出。

1 #coding=utf8

2 importxlrd3

4 defread_excel():5 workbook = xlrd.open_workbook('demo.xlsx')6 sheet2 = workbook.sheet_by_index(1) #sheet索引从0开始

7 rowNum =sheet2.nrows8 colNum =sheet2.ncols9

10 llst =[]11 for i inrange(rowNum):12 lst =[]13 for j inrange(colNum):14 lst.append(sheet2.cell_value(i, j))15 llst.append(lst)16

17 for i inrange(rowNum):18 for j inrange(colNum):19 print llst[i][j],'',20 print

21

22 if __name__ == '__main__':23 read_excel()

notes:

python对于缩进非常严苛。如果最后两句话不小心向后缩进了一下,与17行的for对齐了,那说明这两句话是read_excel函数体内部的。那就乱套了。

指定一个excel里的具体哪一个sheet,即可以按序号顺序来定位(比如第一个sheet,第2个sheet),也可以按名字来找(比如第2个sheet如果名字叫‘Sheet2’的话,就用

workbook.sheet_by_name('Sheet2')来定位sheet)

获取一个cell里面的内容,可以有多种方式,比如:

sheet2.cell_value(1,0)

sheet2.row(1)[0].value

sheet2.cell(1,0).value

注意。读取到的excel的表格里的值都是unicode模式的。这种情况下如果想正确输出的话,直接print就可以。比如放在list里面,依次对list的每个元素进行print。

但是不能直接print lst。这样的话打出来还是unicode的形式。

正常情况下对于unicode的对象,用encode可以将一个unicode对象转换为参数中编码格式的普通字符。这一部分可参考 ref ref2

print如果不想换行的话,直接在print结束后加一个逗号即可。

如果想实现c++里endl一样的换行,直接打上一行print就行了,不需要任何参数。

========= ========== ========= ========== ========= ==========

下面代码纯粹为了展示一下关于excel的其他操作。

ref1 ref2 ref3 (ref1代码很清晰,ref3列出了xlrd,xlwt的一些接口可以方便参考)

1 #coding=utf8

2 importxlrd3

4 defread_excel():5 #打开文件

6 workbook = xlrd.open_workbook('demo.xlsx')7 #获取所有sheet

8 #print workbook.sheet_names() # [u'Sheet1', u'Sheet2']

9 sheet2_name = workbook.sheet_names()[1]10

11 #根据sheet索引或者名称获取sheet内容

12 sheet2 = workbook.sheet_by_index(1) #sheet索引从0开始

13 sheet2 = workbook.sheet_by_name('Sheet2')14

15 #sheet的名称,行数,列数

16 print 'sheet的名称,行数,列数'

17 printsheet2.name,sheet2.nrows,sheet2.ncols18

19 rowNum =sheet2.nrows20 colNum =sheet2.ncols21 #获取整行和整列的值(数组)

22 rows = sheet2.row_values(3) #获取第四行内容

23 cols = sheet2.col_values(2) #获取第三列内容

24 print '第四行:'

25 printrows26

27 llst =[]28 for i inrange(rowNum):29 lst =[]30 for j inrange(colNum):31 lst.append(sheet2.cell_value(i, j))32 llst.append(lst)33

34 for i inrange(rowNum):35 for j inrange(colNum):36 print llst[i][j],'',37 print

38

39 if __name__ == '__main__':40 read_excel()

View Code

实例:

原excel:

像电话号码、年龄后面还带小数,还没来得及处理。

其他参考资料:ref ref2

你可能感兴趣的:(python,excel处理成绩)