一、前言
使用python读写Excel库十分方便,安装 xlwt和xlrd 两个库后就可以愉快的玩耍了。接下来我们看下怎么使用吧
二、需要的库
- xlwt库,写Excel文档
- xlrd库,读Excel文档
三、对象类型
- Workbook类型:workbook即工作簿,对应一整个Excel文档,这个不用多解释;
- Worksheet类型:worksheet即工作表。一个Excel文档可以有若干个工作表,如下图。worksheet对象即代表对应下面的其中一张表;
四、使用xlwt库来写Excel文档
知道了对象类型,接下来我们来尝试把 九九乘法表 写入Excel文档
引入库
- import xlwt
写入举例
接下来我们写一个方法来完成功能,注释都在代码里了
def writeExample(savePath):
#创建工作簿
workbook = xlwt.Workbook(encoding="utf-8");
#创建工作表
worksheet = workbook.add_sheet("九九乘法表")
#写入
for i in range(0, 9):
for j in range(0, i+1):
str = ("%d * %d = %d"%(i+1,j+1,(i+1)*(j+1)))
#实际写入语句
worksheet.write(i,j,str)
#保存
workbook.save(savePath)
效果
五、使用xlrd库来读Excel文档
引入库
import xlrd
读取举例
def readExample(excelPath):
#获得book对象
workbook = xlrd.open_workbook(excelPath)
#获得sheet对象的3种写法
worksheet = workbook.sheets()[0] #通过sheet()方法,并结合下标来获取
# worksheet = workbook.sheet_by_index(0) #直接通过下标来获取
# worksheet = workbook.sheet_by_name("your excel name") #通过名字来获取
#因为xlrd库里的api没提示,这里手动指定类型,这样写起来就有提示了
assert isinstance(worksheet,xlrd.sheet.Sheet)
#自己写时若不知道类型,可以解开下面的打印,然后复制一下
#print(type(worksheet))
#打印行数和列数
print("行数",worksheet.nrows)
print("列数",worksheet.ncols)
#获取第i,j个格子的值的3种写法
print(worksheet.cell(0,0).value)
print(worksheet.cell_value(0,0))
print(worksheet.row(0)[0].value)
#遍历
for i in range(worksheet.nrows):
for j in range(worksheet.ncols):
print(worksheet.cell_value(i,j))
效果
六、完整代码
import xlwt
excelPath = "./九九乘法表.xls"
def writeExample(savePath):
#创建工作簿
workbook = xlwt.Workbook(encoding="utf-8");
#创建工作表
worksheet = workbook.add_sheet("九九乘法表")
#写入
for i in range(0, 9):
for j in range(0, i+1):
str = ("%d * %d = %d"%(i+1,j+1,(i+1)*(j+1)))
#实际写入语句
worksheet.write(i,j,str)
#保存
workbook.save(savePath)
writeExample(excelPath)
import xlrd
def readExample(excelPath):
#获得book对象
workbook = xlrd.open_workbook(excelPath)
#获得sheet对象的3种写法
worksheet = workbook.sheets()[0] #通过sheet()方法,并结合下标来获取
# worksheet = workbook.sheet_by_index(0) #直接通过下标来获取
# worksheet = workbook.sheet_by_name("your excel name") #通过名字来获取
#因为xlrd库里的api没提示,这里手动指定类型,这样就有提示了
assert isinstance(worksheet,xlrd.sheet.Sheet)
#自己写时若不知道类型,可以解开下面的打印,然后复制一下
#print(type(worksheet))
#打印行数和列数
print("行数",worksheet.nrows)
print("列数",worksheet.ncols)
#获取第i,j个格子的值的3种写法
print("获取第(0,0)个格子的值的3种写法")
print(worksheet.cell(0,0).value)
print(worksheet.cell_value(0,0))
print(worksheet.row(0)[0].value)
print()
#遍历
for i in range(worksheet.nrows):
for j in range(worksheet.ncols):
print(worksheet.cell_value(i,j),end="\t")
print()
readExample(excelPath)