xlrd/xlwt操作03版本之前的Excel文件,openpyxl操作03版本之后的Excel文件。
在pycharm下面的命令行中输入如下代码:
pip install openpyxl在Pycharm的File→Settings...→Project:xxoo→Project Interperter中的
中右上角的+或者双击列表框中的任何一个库名都可以,弹出如下框:
选中openpyxl,然后点击左下角的Install Package按钮即可安装。
如果excel里面有图片(jpeg,png,bmp。。。),需要安装图片处理模块pillow模块。
pip install pillow在使用之前需要先导入模块openpyxl
from openpyxl import Workbook在写之前需要先初始化,也就是先实例化一个对象。
wb = Workbook()创建完成以后,还需要保存下文件。
wb.save('write.xlsx') # write.xlsx为文件名加文件后缀名在进行工作簿数据读取之前,先进行模块导入
from openpyxl import load_workbook然后进行实例化,插入需要读取的表格文件的文件名。打开的文件,默认的是read_only=False,即可读可写,若有需要,可以指定read_only为True,即只读模式。
wb = load_workbook(filename='write.xlsx') # write.xlsx是Excel文件名。最后选中目标工作簿,进行取值。其中,new_name为工作簿的名字。
sheet = wb['new_name'] print(sheet['B1'].value)当目标单元格内填充的为公式时,需要指定data_only=True,这样返回的就是数字,如果不加这个参数,则读取到的是公式本身。
直接获取名称为new_name的工作簿。
wb['new_name']sheet.rows为生成器,里面是每一行的数据,每一行又由一个tuple包裹。
for row in sheet.rows: for cell in row: print(cell.value)因为是按行,所以返回值的顺序为A1、B1、C1。
与sheet.rows类似,不过这里的每一个元组是每一列的单元格的值。
for column in sheet.columns: for cell in column: print(cell.value)因为按列,所以输出结果的顺序为A1、A2、A3。
上面的代码是获取所有的单元格的数据,如果要获得某行的数据,给其一个索引就行了,因为sheet.rows与sheet.columns是生成器类型的,不能使用索引,转换成list之后在使用索引,list(sheet.rows)[2]这样就可以获取到第三行或者列的tuple对象。
for cell in list(sheet.rows)[2]: print(cell.value)可以使用range函数,上面的写法,获得了以A1为左上角,B3为右下角矩形区域的所有的单元格、需要注意的是,range从1开始的,因为在openpyxl中为了和Excel中的表达方式一致,并不和编程语言的习惯以0表示第一个值。
for i in range(1, 4): for j in range(1, 3): print(sheet.cell(row=i, column=j).value)还可以使用切片的方式。sheet['A1', 'B2']返回一个元组,该元组内部还是元组,由每一行的单元格构成一个元组。
for row_cell in sheet['A1': 'B3']: for cell in row_cell: print(cell)设置A4出的单元格的内容,如果需要修改的单元格不存在,则创建该单元格,然后将值写入。
ws1['A4'] = 4 wb.save('write.xlsx')通过cell来进行写入,通过行数和列数找到单元格,通过value进行赋值。
ws1.cell(row=4, column=2, value=10) wb.save('write.xlsx')可以一次添加多行数据,从第一行空白行开始(下面所有的都是空白行)写入。
将row中的值分别写入到第一行的单元格中。其中row的值的类型必须是列表、元组、一个范围(range)、生成器。
row = [1, 2, 3, 4, 5] ws1.append(row) wb.save('write.xlsx')在设置之前需要先导入模块
from openpyxl.styles import Font, colors, Alignment # 字体、颜色、对齐方式直接使用属性aligment,这里指定垂直居中和左右居中。除了center,还可以使用right、left等等参数。
sheet['B1'].aligment = Alignment(horizontal='center', vertical='center')以合并区域的右上角的那个单元格为基准,覆盖其他单元格,称之为一个大单元格。
合并单元格,往左上角单元格写入数据。如果这些单元格都有数据,则只保存左上角的单元格的数据。
将一个大单元格拆分为几个小单元格。拆分完成后,大单元格中的值回到A1的位置。
sheet.unmerge_cells('A1:C3')
转载于:https://www.cnblogs.com/ZN-225/p/10572557.html
相关资源:openpyxl安装