当前位置:   article > 正文

python之使用xlrd读取excel_python 用xlrd怎么读xlsx文件

python 用xlrd怎么读xlsx文件
  1. # # test_sample.py
  2. # import pytest
  3. # @pytest.fixture()
  4. # def is_odd(request):
  5. # print('Now the parameter are:--{}\n'.format(request.param))
  6. # if int(request.param) % 2 == 0:
  7. # return False
  8. # else:
  9. # return True
  10. #
  11. # @pytest.mark.parametrize("is_odd", [1, 2], indirect=True)
  12. # def test_is_odd(is_odd):
  13. # if is_odd:
  14. # print("is odd number")
  15. # else:
  16. # print("is not odd number")
  17. #
  18. #
  19. # if __name__ == "__main__":
  20. # pytest.main([])
  21. # !/usr/bin/env python
  22. # -*- coding:utf-8 -*-
  23. # from openpyxl import load_workbook
  24. # def test_readExcel():
  25. # # wb = load_workbook('C:/Users/Administrator/Desktop/test.xlsx')
  26. # wb = load_workbook('./test.xlsx')
  27. # # 获得所有sheet的名称
  28. # print(wb.get_sheet_names())
  29. # # 根据sheet名字获得sheet
  30. # a_sheet = wb.get_sheet_by_name('Sheet1')
  31. # # 获得sheet名
  32. # print(a_sheet.title) #Sheet1
  33. # # 获得当前正在显示的sheet, 也可以用wb.get_active_sheet()
  34. # sheet = wb.active
  35. # print('当前正在显示的sheet---', sheet)
  36. #
  37. # print('通过worksheet.cell获取所有数据方法:')
  38. # for i in range(1, a_sheet.max_row+1):
  39. # for j in range(1, a_sheet.max_column+1):
  40. # print(a_sheet.cell(row=i, column=j).value,end=' ')
  41. # print('\n')
  42. # 导入模块
  43. import xlrd
  44. def test_readExcel():
  45. # 打开文件方式1:
  46. work_book = xlrd.open_workbook('test.xlsx')
  47. print('打印所有Sheets的个数:',work_book.nsheets)
  48. sheets = work_book.sheets()
  49. print('打印所有Sheets的地址:',sheets)
  50. # 获取工作簿所有sheet表对象名称
  51. sheets_name = work_book.sheet_names()
  52. print('获取工作簿所有sheet表对象名称:',sheets_name)
  53. # 按索引获取sheet对象
  54. sheet_1 = work_book.sheet_by_index(0)
  55. print('按索引获取sheet对象',sheet_1)
  56. # 按sheet表名称获取sheet对象,名称分大小写
  57. sheet_2 = work_book.sheet_by_name('Sheet2')
  58. print('按sheet表名称获取sheet对象,名称分大小写:',sheet_2)
  59. # 获取sheet表单元格对象,单元格数据类型:单元格值
  60. cell0 = sheet_1.cell(1,1)
  61. print('cell0',cell0,'type',type(cell0))
  62. #cell0 text:'女' type <class 'xlrd.sheet.Cell'>
  63. # 获取sheet表单元格值
  64. cell_0_value = sheet_1.cell_value(1, 1)
  65. print('cell_0_value',cell_0_value,'type',type(cell_0_value))
  66. # cell_0_value 女 type <class 'str'>
  67. # 获取单元格类型
  68. cell_0_type = sheet_1.cell_type(1, 1)
  69. print('获取单元格类型:',cell_0_type)
  70. # 获取sheet表对象有效行数
  71. row_sum = sheet_1.nrows
  72. print('获取sheet表对象有效行数:',row_sum)#获取sheet表对象有效行数: 3
  73. # 获取sheet表某一行长度
  74. row_len = sheet_1.row_len(0)
  75. "def row_len(self, rowx):"
  76. print('获取sheet表某一行长度',row_len)#获取sheet表某一行长度 2
  77. # 获取sheet表某一行所有数据类型及值
  78. row_0 = sheet_1.row(0)
  79. "def row(self, rowx):"
  80. print('获取sheet表某一行所有数据类型及值',row_0,'type(row_0):',type(row_0))
  81. #获取sheet表某一行所有数据类型及值 [text:'姓名', text:'性别'] type(row_0): <class 'list'>
  82. # 获取某一行对象的值,可指定开始结束列
  83. row_0_s = sheet_1.row_slice(0, 0, 1)
  84. "def row_slice(self, rowx, start_colx=0, end_colx=None):"
  85. print('获取某一行对象的值,可指定开始结束列',row_0_s)
  86. #获取某一行对象的值,可指定开始结束列: [text:'姓名', text:'性别']
  87. # 获取sheet表对象某一行数据类型,返回一个数组对象
  88. row_0_type = sheet_1.row_types(0,0)
  89. "def row_types(self, rowx, start_colx=0, end_colx=None):"
  90. print('获取sheet表对象某一行数据类型,返回一个数组对象',row_0_type)
  91. # 获取sheet表对象某一行数据值
  92. row_0_value = sheet_1.row_values(1)
  93. "def row_values(self, rowx, start_colx=0, end_colx=None):"
  94. print('获取sheet表对象某一行数据值:',row_0_value,'type(row_0_value):',type(row_0_value))
  95. # 获得sheet对象所有行对象生成器
  96. rows = sheet_1.get_rows()
  97. print('获得sheet对象所有行对象生成器:',rows)
  98. #获得sheet对象所有行对象生成器: <generator object Sheet.get_rows.<locals>.<genexpr> at 0x0000023EC32E6960>
  99. #获得每行对象的数据类型和值
  100. for row in rows:
  101. print('row:',row)
  102. #row: [text:'姓名', text:'性别']
  103. #row: [text:'张三', text:'女']
  104. #row: [text:'李四', text:'男']
  105. # 获取sheet表有效列数
  106. col_sum = sheet_1.ncols
  107. print('获取sheet表有效列数:',col_sum)
  108. #获取sheet表有效列数: 2
  109. # 获取列对象
  110. # #################### 该方法好像有问题... ####################3
  111. cell_0 = sheet_1.col_slice(0)
  112. "def col_slice(self, colx, start_rowx=0, end_rowx=None):"
  113. print('获取列对象:',cell_0)
  114. #获取列对象: [text:'姓名', text:'张三', text:'李四']
  115. # 获取某一列的值
  116. col_0_value = sheet_1.col_values(0)
  117. "def col_values(self, colx, start_rowx=0, end_rowx=None):"
  118. print('获取某一列的值:',col_0_value)
  119. #获取某一列的值: ['姓名', '张三', '李四']
  120. # 获取某一列的数据类型
  121. col_0_type = sheet_1.col_types(0)
  122. "def col_types(self, colx, start_rowx=0, end_rowx=None):"
  123. print('获取某一列的数据类型:',col_0_type)
  124. # 按行读取
  125. data_row = []
  126. for row in range(sheet_1.nrows):
  127. data_row.append(sheet_1.row_values(row))
  128. print('按行读取:',data_row,'type(data_row):',type(data_row))
  129. #按行读取: [['姓名', '性别'], ['张三', '女'], ['李四', '男']] type(data_row): <class 'list'>
  130. # 按列读取
  131. data_col = [sheet_1.col_values(i) for i in range(sheet_1.ncols)]
  132. print('按列读取:',data_col,'type(data_col):',type(data_col))
  133. #按列读取: [['姓名', '张三', '李四'], ['性别', '女', '男']] type(data_col): <class 'list'>
  134. # 按行读取test.xlsx所有sheet表数据
  135. all_data = {}
  136. for i, sheet_obj in enumerate(work_book.sheets()):
  137. all_data[i] = [sheet_obj.row_values(row)
  138. for row in range(sheet_obj.nrows)]
  139. print('按行读取test.xlsx所有sheet表数据:',all_data)
  140. #按行读取test.xlsx所有sheet表数据: {0: [['姓名', '性别'], ['张三', '女'], ['李四', '男']], 1: [], 2: []}
  141. # 按列读取test.xlsx所有sheet表数据
  142. all_data = {}
  143. for i, sheet_obj in enumerate(work_book.sheets()):
  144. all_data[i] = [sheet_obj.col_values(row)
  145. for row in range(sheet_obj.ncols)]
  146. print('按列读取test.xlsx所有sheet表数据:',all_data)
  147. #按列读取test.xlsx所有sheet表数据: {0: [['姓名', '张三', '李四'], ['性别', '女', '男']], 1: [], 2: []}
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/732171
推荐阅读
相关标签
  

闽ICP备14008679号