python对Excel的读取

系统 1348 0

  在python自动化中,经常会遇到对数据文件的操作,比如添加多名员工,但是直接将员工数据写在python文件中,不但工作量大,要是以后再次遇到类似批量数据操作还会写在python文件中吗?

  应对这一问题,可以将数据写excel文件,针对excel 文件进行操作,完美解决。

  本文仅介绍python对excel的操作

安装xlrd 库

  xlrd库 官方地址:https://pypi.org/project/xlrd/

  pip install xlrd

  笔者在安装时使用了 pip3 install xlrd

  原因:笔者同时安装了python2 和 python3

  如果pip的话会默认将库安装到python2中,python3中不能直接调用。

  那么到底是使用pip 还是pip3进行安装呢?

    如果系统中只安装了Python2,那么就只能使用pip。
    如果系统中只安装了Python3,那么既可以使用pip也可以使用pip3,二者是等价的。
    如果系统中同时安装了Python2和Python3,则pip默认给Python2用,pip3指定给Python3用。

 

Xlrd 库简单的使用

  以如下excel文件为例进行操作

  文件名为demo,有两个sheet,名为工作表1和工作表2

  工作表1中有如下数据

python对Excel的读取_第1张图片

简单的使用  

            
              #
            
            
               coding=utf-8
            
            
              import
            
            
               xlrd


            
            
              #
            
            
               打开文件
            
            
data = xlrd.open_workbook(
            
              '
            
            
              file/demo.xlsx
            
            
              '
            
            
              )


            
            
              #
            
            
               查看工作表
            
            
              data.sheet_names()

            
            
              print
            
            (
            
              "
            
            
              sheets:
            
            
              "
            
             +
            
               str(data.sheet_names()))


            
            
              #
            
            
               通过文件名获得工作表,获取工作表1
            
            
table = data.sheet_by_name(
            
              '
            
            
              工作表1
            
            
              '
            
            
              )


            
            
              #
            
            
               打印data.sheet_names()可发现,返回的值为一个列表,通过对列表索引操作获得工作表1
            
            
              
#
            
            
               table = data.sheet_by_index(0)
            
            
              #
            
            
               获取行数和列数
            
            
              
#
            
            
               行数:table.nrows
            
            
              
#
            
            
               列数:table.ncols
            
            
              print
            
            (
            
              "
            
            
              总行数:
            
            
              "
            
             +
            
               str(table.nrows))

            
            
              print
            
            (
            
              "
            
            
              总列数:
            
            
              "
            
             +
            
               str(table.ncols))


            
            
              #
            
            
               获取整行的值 和整列的值,返回的结果为数组
            
            
              
#
            
            
               整行值:table.row_values(start,end)
            
            
              
#
            
            
               整列值:table.col_values(start,end)
            
            
              
#
            
            
               参数 start 为从第几个开始打印,
            
            
              
#
            
            
               end为打印到那个位置结束,默认为none
            
            
              print
            
            (
            
              "
            
            
              整行值:
            
            
              "
            
             +
            
               str(table.row_values(0)))

            
            
              print
            
            (
            
              "
            
            
              整列值:
            
            
              "
            
             + str(table.col_values(1
            
              )))


            
            
              #
            
            
               获取某个单元格的值,例如获取B3单元格值
            
            
cel_B3 = table.cell(3,2
            
              ).value

            
            
              print
            
            (
            
              "
            
            
              第三行第二列的值:
            
            
              "
            
             + cel_B3)
          

运行后结果

python对Excel的读取_第2张图片

 

项目中使用

  获得所有的数据

            
               1
            
            
              #
            
            
               coding=utf-8
            
            
               2
            
            
               3
            
            
              import
            
            
               xlrd

            
            
               4
            
            
               5
            
            
              def
            
            
               read_xlrd(excelFile):

            
            
               6
            
                 data =
            
               xlrd.open_workbook(excelFile)

            
            
               7
            
                 table =
            
               data.sheet_by_index(0)

            
            
               8
            
            
               9
            
            
              for
            
             rowNum 
            
              in
            
            
               range(table.nrows):

            
            
              10
            
                     rowVale =
            
               table.row_values(rowNum)

            
            
              11
            
            
              for
            
             colNum 
            
              in
            
            
               range(table.ncols):

            
            
              12
            
            
              if
            
             rowNum > 0 
            
              and
            
             colNum ==
            
               0:

            
            
              13
            
            
              print
            
            
              (int(rowVale[0]))

            
            
              14
            
            
              else
            
            
              :

            
            
              15
            
            
              print
            
            
              (rowVale[colNum])

            
            
              16
            
            
              print
            
            (
            
              "
            
            
              ---------------
            
            
              "
            
            
              )

            
            
              17
            
            
              18
            
            
              #
            
            
               if判断是将 id 进行格式化
            
            
              19
            
            
              #
            
            
               print("未格式化Id的数据:")
            
            
              20
            
            
              #
            
            
               print(table.cell(1, 0))
            
            
              21
            
            
              #
            
            
               结果:number:1001.0
            
            
              22
            
            
              23
            
            
              24
            
            
              if
            
            
              __name__
            
             == 
            
              '
            
            
              __main__
            
            
              '
            
            
              :

            
            
              25
            
                 excelFile = 
            
              '
            
            
              file/demo.xlsx
            
            
              '
            
            
              26
            
                 read_xlrd(excelFile=excelFile)
          

  结果

python对Excel的读取_第3张图片

  如果在项目中使用则可将内容方法稍为做修改,获得所有的数据后,将每一行数据作为数组进行返回  

            
               1
            
            
              #
            
            
               coding=utf-8
            
            
               2
            
            
               3
            
            
              import
            
            
               xlrd

            
            
               4
            
            
               5
            
            
              def
            
            
               read_xlrd(excelFile):

            
            
               6
            
                 data =
            
               xlrd.open_workbook(excelFile)

            
            
               7
            
                 table =
            
               data.sheet_by_index(0)

            
            
               8
            
                 dataFile =
            
               []

            
            
               9
            
            
              10
            
            
              for
            
             rowNum 
            
              in
            
            
               range(table.nrows):

            
            
              11
            
            
              #
            
            
               if 去掉表头
            
            
              12
            
            
              if
            
             rowNum >
            
               0:

            
            
              13
            
            
                          dataFile.append(table.row_values(rowNum))

            
            
              14
            
            
              15
            
            
              return
            
            
               dataFile

            
            
              16
            
            
              17
            
            
              18
            
            
              if
            
            
              __name__
            
             == 
            
              '
            
            
              __main__
            
            
              '
            
            
              :

            
            
              19
            
                 excelFile = 
            
              '
            
            
              file/demo.xlsx
            
            
              '
            
            
              20
            
            
              print
            
            (read_xlrd(excelFile=excelFile))
          

  结果


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论