python的xlwt库的作用_请问不用三方库怎么用python读写excel文件?xlrd xlwt 等三方库是什么原理?...

这题还真是有点难了。

只能简单这样说:

1、简单说如果不用第三方库来读写excel文件的话,主要就是用标准库来读写文件,然后再对其进行解析。

2、库的话一般来说不外乎把基本的文件读写、内容解析等方法封装了起来。翻了一会openxls(注意官方说了xlrd已经不再维护,现在主要换成这个)

要完全说明白太难了,简单说下扒的思路吧:扒调用代码

>>> from openpyxl import load_workbook

>>> wb = load_workbook(filename = 'empty_book.xlsx')

>>> sheet_ranges = wb['range names']

>>> print(sheet_ranges['D18'].value)

可以看到是用load_workbook(filename ='empty_book.xlsx')来实现读取的,那么找到读取方法的定义:

参数是这些:

def load_workbook(filename, use_iterators=False, keep_vba=KEEP_VBA, guess_types=False, data_only=False):

当然简单起见其实我们可以只管不能为空的参数,也就是filename就行,然后顺着这个变量看下后面怎么用的。

def _load_workbook(wb, archive, filename, use_iterators, keep_vba):

valid_files = archive.namelist()

# If are going to preserve the vba then attach a copy of the archive to the

# workbook so that is available for the save.

if keep_vba:

try:

f = open(filename, 'rb')

s = f.read()

f.close()

except:

pos = filename.tell()

filename.seek(0)

s = filename.read()

filename.seek(pos)

wb.vba_archive = ZipFile(BytesIO(s), 'r')

注意这段是关键:当需要保留vba内容时,它是以rb方式读取的,也就是以二进制文件的形式读取。

如果不是,它是这样操作的:

pos = filename.tell() 读取该文件开头的位置,存至pso

filename.seek(0) 将文件读写位置放到0处,也就是开头处

s = filename.read() 读取文件内容。注意这里就只读取内容,读出的结果一般是string,由于是从头读到尾,所以读完后文件读写位置会跑到末尾(你可以想象成一个指针现在指到了链表的末尾)

filename.seek(pos) 回到文件读写开头位置。

3、后面的内容就太细了,不多说了。补充一些关键的地方。

首先,它们都是事先定义了一个详细的和excel 对应的类:

WorkBook() <-- WorkSheet <-- Cells, Charts 等等

其次,在库里封装由文件内容(二进制、string)来填充这些对象和属性的方法。

这样,就可以把一些比较复杂的操作给“藏”起来,只调用对应的功能函数就行了。哎。还没法传图。空了再来吧、

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值