共计 1752 个字符,预计需要花费 5 分钟才能阅读完成。
本文首发于公众号:Hunter 后端
原文链接:Python 笔记一之 excel 的读取
这里我罕用的 python 对于 excel 的读取库有两个,一个是 xlsxwriter 用于操作 excel 的写入,一个是 xlrd 用于 excel 文件的读取。
应用的库的版本如下:
- xlsx==1.2.6
- xlrd==1.1.0
xlsxwriter 写入 excel
新建一个 excel
import xlsxwriter
path = "/Users/hunter/xxx.xlsx"
wb = xlsxwriter.Workbook(path)
增加一个 sheet:
# 定义 sheet 的名称
sheet_name = "sheet_name"
# 增加一个 sheet 页
sheet_1 = wb.add_worksheet(sheet_name)
sheet 表格数据的写入
sheet 的表格数据有几种形式,一种是通过 x, y 这种坐标轴定位的形式,从左上角开始,左上角也就是 ‘A1’ 的位子为 (0, 0)。
比方咱们想要在左上角写入数据:
sheet1.write(0, 0, "A1 数据")
如果咱们想要在第二行,第三列写入数据:
sheet1.write(1, 2, "C2 数据")
另一种是通过 excel 的单元格名称来定位写入,比方 ‘A1’,’D4’ 这种:
sheet1.write("A1", "A1 数据")
sheet1.write("F2", "F2 数据")
批量写入
除了单个单元格的数据写入,咱们还能够通过某个起始单元格来批量写入。
批量写入能够从横向写入,也能够从纵向写入。
比方如果想要从 C2 单元格开始,横向写入 python,java,JS 三条数据,能够如下操作:
sheet1.write_row("C2", ["python", "java", "JS"])
也能够通过 i, j 的定位形式来操作,比方从 “C3” 开始往后写入:
sheet1.write_row(2, 2, ["python", "java", "JS"])
下面的 write_row() 办法是横向写入,从起始地位横向开始写,如果是纵向,那就应用 write_column()
保留
而后将这个 excel 保留:
wb.close()
xlrd 读取 excel
留神: 装置 xlrd 的时候不要装置默认的版本,以后默认的最新版本不能解析 xlsx 文件,我这里抉择的是 xlrd==1.0.0
应用 xlrd 从 excel 中读取数据的操作形式如下:
获取 excel
import xlrd
path = "/Users/hunter/xxx.xlsx"
workbook = xlrd.open_workbook(path)
获取 sheet
获取 sheet 对象列表:
sheet_list = workbook.sheets()
获取所有的 sheet 的名称列表:
sheet_name_list = workbook.sheet_names()
依据索引获取单个 sheet:
i = 0
sheet = workbook.sheet_by_index(i)
获取单元格数据
如果间接获取单元格数据,能够通过坐标轴的 x, y 的形式来定位获取,其中左上角是 (0, 0)。
比方咱们想获取 (0, 0) 位子的数据,也就是 ‘A1’ 的单元格,咱们能够:
cell = sheet.cell(0, 0)
获取到的是这个单元格对象,如果想要获取其中的值,须要对 cell 对象再取值:
print(cell.value)
也能够间接应用取值的办法:
print(sheet.cell_value(0, 0))
获取行列数据
下面是通过单元格单个获取数据,咱们能够独自获取行和列的数据,比方获取第二行的单元格:
row_2 = sheet.row(1)
下面获取到的数据是一个对象列表,每个元素都是一个个的单元格 cell,也就是咱们下面通过 cell() 函数获取到的对象。
如果是想间接取值,则能够:
row_value_2 = sheet.row_values(1)
返回的是一个列表,元素是该行单元的 value 值
查看该行长度:
row_value_2_len = sheet.row_len(1)
获取 sheet 的总行数:
nrows = sheet.nrows
依据列获取数据将函数的 row 换成 col 即可,比方获取第二列的数据:
col_value_2 = sheet.col_values(1)
如果想获取更多相干文章,可扫码关注浏览: