Python基础
io-excel:
Excel扩展名:xlsx cell:单元格
Excel表格(能够对Excel表格进行读数据、取数据就行)
1. Excel表格相当于一个二维数组
2. 将数据放在Excel中
3. 保存数据的步骤:
1. 新建excel文件(一个总的Excel)
2. 新建工作簿(里面写数据的Excel表格)
3. 往里面添加数据(以列表的形式添加)(要存放的数据:data,是一个二维数组)
4. 全部填写完,一次性的把数据全部保存到Excel表中
4. 取数据的步骤
1. (u"data.xlsx")=> u:表示里面的数据类型是UTF-8的
2. 获取Excel文件
3. 获取工作簿
4. 获取工作簿中的单元格
5. 如果不能切片、不能使用索引,就转化成数组
-
读写数据
读写数据
-
安装 openpyxl
pip install openpyxl
-
打开文件
from openpyxl import load_workbook from openpyxl.writer.excel import ExcelWriter try: workbook_ = load_workbook(u"data.xlsx") # 获得表单名字 sheetnames = workbook_.get_sheet_names() sheet = workbook_.get_sheet_by_name(sheetnames[0]) except Exception as ex: print(ex)
-
获取单元格
# 获取某个单元格的值,观察excel发现也是先字母再数字的顺序,即先列再行 b4 = sheet['A4'] #A行4列 # 除了用下标的方式获得,还可以用cell函数, 换成数字,这个表示B4 b4_too = sheet.cell(row=4, column=2) print(b4_too.value) for i in range(2): for j in range(5): print(sheet.cell(row=i+1, column=j+1).value,end=' ') print()
-
获得最大行和最大列
# 获得最大列和最大行 print(sheet.max_row) print(sheet.max_column)
-
获取行和列
sheet.rows为生成器, 里面是每一行的数据,每一行又由一个tuple包裹。 sheet.columns类似,不过里面是每个tuple是每一列的单元格。
# 因为按行,所以返回A1, B1, C1这样的顺序 for row in sheet.rows: for cell in row: print(cell.value) # A1, A2, A3这样的顺序 for column in sheet.columns: for cell in column: print(cell.value)
上面的代码就可以获得所有单元格的数据。如果要获得某行的数据呢?给其一个索引就行了,因为sheet.rows是生成器类型,不能使用索引,转换成list之后再使用索引,list(sheet.rows)[2]这样就获取到第三行的tuple对象。
for cell in list(sheet.rows)[2]: print(cell.value)
-
切片获取
还可以像使用切片那样使用。sheet[‘A1’:‘B3’]返回一个tuple,该元组内部还是元组,由每行的单元格构成一个元组。
for row_cell in sheet['A1':'B3']: for cell in row_cell: print(cell)
写入数据
-
完整案例
from openpyxl import Workbook from openpyxl import load_workbook from openpyxl.writer.excel import ExcelWriter try: # 新建工作表 wb=Workbook() # 新建一个工作表,可以指定索引,适当安排其在工作簿中的位置 sheet=wb.create_sheet('Data', index=1) # 被安排到第二个工作表,index=0就是第一个位置 # 删除某个工作表 # wb.remove(wb) # del wb[sheet] # row = [1, 2, 3, 4, 5] # sheet.append(row) rows = [ ['Number', 'data1', 'data2'], [2, 40], [3, 40, 25], [4, 50, 30], [5, 30, 10], [6, 25, 5], [7, 50, 10111], ] for row in rows: sheet.append(row) wb.save(r'新歌检索失败1477881109469.xlsx') except Exception as ex: print(ex)
-
-
面向对象(对象抽象成类)
-
Instance:实例
-
init(self,xx):
self是指当前构造的对象,和this是一个性质,不是特质谁,是指当前特定时间内执行这个命令的对象 -
类包括属性和行为,属性和行为都需要进行封装
-
每个对象公共的属性写在类里
-
安全问题
1. (双下划线)__+变量名=>写在类中公共的全局变量名变为类中的私有变量
2. 安全性:需要保护的属性应该放在类中,变成私有变量,并将私有变量放在行为里
3. 原因:如果属性放在类里作为公有的属性,在其他地方很容易就会被调出来
但是如果是类中私有的,就只能在该类中,通过调用行为使用
-