LUA 读表格 excel如何读_LUA 读表格

>>> import xlrd,xlwt



一、读excel

1、打开一个excel(读模式)



>>> book = xlrd.open_workbook(r"C:\视频\python高效实践技巧笔记\6数据编码与处理相关话题\6-6.xls")   #读模式打开一个excel,读一个excel要先实例化一个workbook
>>> book.sheets()        #查看excel的各个表
[<xlrd.sheet.Sheet object at 0x02CD7270>, <xlrd.sheet.Sheet object at 0x02CD7530>, <xlrd.sheet.Sheet object at 0x02CD7590>]



2、打开一个sheet表



>>> book.sheet_by_index(0)
<xlrd.sheet.Sheet object at 0x02CD7270>
>>> sheet0 =book.sheet_by_index(0)  #按索引打开一个表
>>> sheet0.nrows            #表的行数
4
>>> sheet0.ncols            #表的列数
4
>>> sheet0.name                #表的名字
u'\u6210\u7ee9'
>>> print sheet0.name
成绩



3、获取表里的一个表格



>>> cell = sheet0.cell(0,0)        #获取表里的一个单元格cell,按坐标选取

>>> cell     #打印结果看出是text(文本)类型,内容为u'\u59d3\u540d'(成绩的unicode)
text:u'\u59d3\u540d'
>>> cell.ctype                #查看单元格内容的类型,其结果是一个玫举类型,玫举定义在xlrd.XL_CELL_  
1
>>> xlrd.XL_CELL_TEXT            #文本内容的类型是1
1

>>> print cell.value
姓名

>>> cell = sheet0.cell(1,2)        #取坐标为(1,2)的表格
>>> cell                #单元格类型为数字,内容为99.0
number:99.0

>>> cell.ctype
2
>>> xlrd.XL_CELL_NUMBER
2
>>> cell.value
99.0



4、查看整行



>>> sheet0.row(1)    #获取1行的内容,参数为行号,返回一个列表。每一个对象都是一个cell对象
[text:u'\u674e\u96f7', number:95.0, number:99.0, number:96.0]
>>> sheet0.row_values(1)    #获取1行的内容(不带内容类型的签名,直接就是内容)返回也是一个列表
[u'\u674e\u96f7', 95.0, 99.0, 96.0]

>>> sheet0.row_values(1,1)    #获取1行内容,从第1项开始,带有切片功能
[95.0, 99.0, 96.0]



>>> help(sheet0.row_values)
Help on method row_values in module xlrd.sheet:

row_values(self, rowx, start_colx=0, end_colx=None) method of xlrd.sheet.Sheet instance
Returns a slice of the values of the cells in the given row.


help(sheet0.row_values)


5、查看整列,与行row操作类似



>>> sheet0.col(1)
[text:u'\u8bed\u6587', number:95.0, number:98.0, number:94.0]
>>> sheet0.col_values(1)
[u'\u8bed\u6587', 95.0, 98.0, 94.0]
>>> sheet0.col_values(1,1)
[95.0, 98.0, 94.0]



6、添加一个单元格



>>> help(sheet0.put_cell)
Help on method put_cell_unragged in module xlrd.sheet:

put_cell_unragged(self, rowx, colx, ctype, value, xf_index) method of xlrd.sheet.Sheet instance


help(sheet0.put_cell)


参数分别为,行号、列号、内容类型,值,xf_index为字体、对齐等格式(可以填None)

二、写excel

1、#写一个excel要先实例化一个workbook



>>> wbook = xlwt.Workbook()        #注意与xlrd的不同



2、添加一个sheet,参数为sheet名字



>>> wsheet1 = wbook.add_sheet('sheet1')



3、写一个单元格



LUA 读表格 excel如何读_迭代_02

>>> help(wsheet1.write)
Help on method write in module xlwt.Worksheet:

write(self, r, c, label='', style=<xlwt.Style.XFStyle object>) method of xlwt.Worksheet.Worksheet instance
This method is used to write a cell to a :class:`Worksheet`.


help(wsheet1.write)


4、保存excel到文件中


>>> help(wbook.save)
Help on method save in module xlwt.Workbook:

save(self, filename_or_stream) method of xlwt.Workbook.Workbook instance
    This method is used to save the Workbook to a file in native Excel
    format.
    
    :param filename_or_stream:
      This can be a string containing a filename of
      the file, in which case the excel file is saved to disk using the name
      provided. It can also be a stream object with a write method, such as
      a :class:`~io.StringIO`, in which case the data for the excel
      file is written to the stream.


help(wbook.save)


将6-6.xls最右列增加一列总分,注意,xlrd可以增加一列,但是没有保存的功能。脚本文件代码为:

LUA 读表格 excel如何读_python_03



# -*- coding: cp936 -*-


import xlrd,xlwt

rbook = xlrd.open_workbook(r'C:\视频\python高效实践技巧笔记\6数据编码与处理相关话题\6-6.xls')
rsheet = rbook.sheet_by_index(0)    #打开sheet

nc = rsheet.ncols            #获取列数
nr = rsheet.nrows            #获取行数

rsheet.put_cell(0,nc,xlrd.XL_CELL_TEXT,u'总分',None)  #放置一个单元格,内容格式是文本,内容是总分
for row in xrange(1,nr):            #迭代表的每一行(除标题栏)
    t = sum(rsheet.row_values(row,1))         #获取行的值并求和(除标题列)        
    rsheet.put_cell(row,nc,xlrd.XL_CELL_NUMBER,t,None)#在每一行放置一个单元格,内容是计算的求和的值


wbook = xlwt.Workbook()            #创建一个excel
wsheet = wbook.add_sheet(rsheet.name)        #添加一个sheet名字是读sheet的名字
style = xlwt.easyxf('align: vertical center,horizontal center')#定义单元格的格式,为write准备,和put_cell不同put_cell可以传None,write不行

for row in xrange(rsheet.nrows):
    for col in xrange(rsheet.ncols):        #迭代读sheet的每一行每一列,对每一个单元格进行迭代,因为写时只能对单元格逐一写,不能整行写
        cell = rsheet.cell_value(row,col)#获取读sheet的单元格的内容
        wsheet.write(row,col,cell,style) #写入写sheet单元格

wbook.save(r'C:\视频\python高效实践技巧笔记\6数据编码与处理相关话题\6-6output.xlsx')            #将excel保存为



输出格式为:

LUA 读表格 excel如何读_python_04