python如何处理表格?-Python教程

资源魔 20 0

python若何解决表格?

python解决表格的办法:

python操作excel次要用到xlrd以及xlwt这两个库,即xlrd是读excel,xlwt是写excel的库。可从这里下载https://pypi.python.org/pypi。上面辨别记载python读以及写excel。

Python写excel——xlwt

Python写excel的难点没有正在结构一个workbook的自身,而是填充的数据,不外这没有正在范畴内。正在写excel的操作中也有辣手的成绩,比方写入兼并的单位格就是比拟费事的,另外写入另有没有同的款式。

具体代码以下:

import xlwt
#设置表格款式
def set_style(name,height,bold=False):
style = xlwt.XFStyle()
font = xlwt.Font()
font.name = name
font.bold = bold
font.color_index = 4
font.height = height
style.font = font
return style
#写Excel
def write_excel():
f = xlwt.Workbook()
sheet1 = f.add_sheet('先生',cell_overwrite_ok=True)
row0 = ["姓名","春秋","出身日期","喜好"]
colum0 = ["张三","李四","恋习Python","小明","小红","知名"]
sheet1.write(0,i,row0[i],set_style('Times New Roman',220,True))
#写第一列
for i in range(0,len(colum0)):
sheet1.write(i+1,0,colum0[i],set_style('Times New Roman',220,True))
sheet1.write(1,3,'2006/12/12')
sheet1.write_merge(6,6,1,3,'未知')#兼并行单位格
sheet1.write_merge(1,2,3,3,'打游戏')#兼并列单位格
sheet1.write_merge(4,5,3,3,'打篮球')
f.save('test.xls')
if __name__ == '__main__':
write_excel()

后果图:

50cbe5ee3e1841a3275676b18b00487.png

正在此,对write_merge()的用法稍作诠释,如上述:sheet1.write_merge(1,2,3,3,'打游戏'),即正在四列兼并第2,3列,兼并后的单位格内容为"算计",并设置了style。此中,外面一切的参数都是以0开端较量争论的。

Python读excel——xlrd

Python读取Excel表格,相比xlwt来讲,xlrd提供的接口比拟多,但进程也有几个比拟费事的成绩,比方读取日期、读兼并单位格内容。

上面先看看根本的操作:

7ffc64b9f68aa297f12881e15e2ba4a.png

全体思绪为,关上文件,选定表格,读取行列内容,读取表格内数据

具体代码以下:

import xlrd
from datetime import date,datetime
file = 'test3.xlsx'
def read_excel():
wb = xlrd.open_workbook(filename=file)#关上文件
print(wb.sheet_names())#猎取一切表格名字
sheet1 = wb.sheet_by_index(0)#经过索引猎取表格
sheet2 = wb.sheet_by_name('年级')#经过名字猎取表格
print(sheet1,sheet2)
print(sheet1.name,sheet1.nrows,sheet1.ncols)
rows = sheet1.row_values(2)#猎取行内容
cols = sheet1.col_values(3)#猎取列内容
print(rows)
print(cols)
print(sheet1.cell(1,0).value)#猎取表格里的内容,三种形式
print(sheet1.cell_value(1,0))
print(sheet1.row(1)[0].value)

运转后果以下:

bf3bdd416779fba08553835c6f68d27.png

那末成绩来了,下面的运转后果中红框框中的字段明明是出身日期,可显示确实实浮点数;同时兼并单位格外面应该是有内容的,后果不克不及为空。

别急,咱们来逐个处理这两个成绩:

1.python读取excel中单位格内容为日期的形式

python读取excel中单位格的内容前往的有5品种型,即下面例子中的ctype:

ctype : 0 empty,1 string,2 number, 3 date,4 boolean,5 error

即date的ctype=3,这时候需求应用xlrd的xldate_as_tuple来解决为date格局,先判别表格的ctype=3时xldate能力开端操作。

具体代码以下:

import xlrd
from datetime import date,datetime
print(sheet1.cell(1,2).ctype)
date_value = xlrd.xldate_as_tuple(sheet1.cell_value(1,2),wb.datemode)
print(date_value)
print(date(*date_value[:3]))
print(date(*date_value[:3]).strftime('%Y/%m/%d'))

0dade1f0acb52ebdf3c7bb1efd75c4e.png

2.猎取兼并单位格的内容

正在操作以前,先引见一下merged_cells()用法,merged_cells前往的这四个参数的含意是:(row,row_range,col,col_range),此中[row,row_range)包罗row,没有包罗row_range,col也是同样,即(1, 3, 4, 5)的含意是:第1到2行(没有包罗3)兼并,(7, 8, 2, 5)的含意是:第2到4列兼并。

具体代码以下:

print(sheet1.merged_cells)print(sheet1.cell_value(1,3))
print(sheet1.cell_value(4,3))
print(sheet1.cell_value(6,1))

18fa2af4c3e2b37bd0cdcd5a5e3035f.png

发现法则了没?是的,猎取merge_cells前往的row以及col低位的索引便可! 于是能够这样批量猎取:

具体代码以下:

merge = []
print(sheet1.merged_cells)
for (rlow,rhigh,clow,chigh) in sheet1.merged_cells:
merge.append([rlow,clow])
for index in merge:
print(sheet1.cell_value(index[0],index[1]))

运转后果跟上图同样,以下:

94ff412e6221cf75ee5fee246b805a4.png

保举教程:《python》

以上就是python若何解决表格?的具体内容,更多请存眷资源魔其它相干文章!

标签: Python 表格 python教程 python编程 python使用问题

抱歉,评论功能暂时关闭!