openpyxl 的使用
在openpyxl操作Excel文件时,所有的行号、列号,都是从“1”开始,而不是从“0”开始。
1、安装 openpyxl
pip install openpyxl2、导入 openpyxl 及其常用模块
import openpyxl
from openpyxl.styles import Alignment,Border,Side3、创建 Excel 文件
work_book = openpyxl.Workbook() # 创建一个 Excel文件,注意此处的 W 是大写的
work_sheet = work_book.active # 激活一张表
work_book.save(‘d:\My Project\文件名.xlsx’) # 务必要保存4、打开 Excel 文件
work_book = openpyxl.load_workbook(excel_file_name) # 打开一个 Excel 文档5、创建一张表
work_sheet = work_book.create_sheet(‘表的名称’,0) # 其中‘0’为参数,如果有‘0’的话,则在所有表的 最前方 创建一张新表,如果没有参数,则在所有表的 最后方 创建一张新表
work_book.save(‘d:\My Project\文件名.xlsx’) # 务必要保存6、加载一张表
work_sheet = work_book.get_sheet_by_name(‘表格名’) # 加载一张表
或者可以使用
work_sheet = work_book[‘表格名’]
work_sheet_list = work_book.get_sheet_names() # 获取当前 Excel文件中 所有表的名称7、给表修改名称
work_sheet = work_book.get_sheet_by_name(‘表格名’)
work_sheet.title = ‘new title’ # 或者
work_sheet.title = u’你好’ # 设定一个sheet的名字 必须是Unicode8、删除工作表
work_sheet = work_book.get_sheet_by_name(‘表格名’) # 先加载该表
work_book.remove(work_sheet) # 再删除该表9、选择某一个单元格
Cell = activeSheet.cell(row=4, column=2)10、读取单元格数据
cell_value = work_sheet.cell(row=?, column=?).value11、向单元格内写入数据
work_sheet.cell(row=?, column=?, value=‘写入的内容’)12、获取最大行、最大列
max_row = work_sheet.max_row
max_column = work_sheet.max_column13、插入行、列
work_sheet.insert_rows(n) # 在第n行的上方插入一行
work_sheet.insert_cols(m,n) # 从第m列的左侧插入n列
例如:
work_sheet.insert_rows(3) # 在第3行的上方插入一行,原来的第3行变为第4行
work_sheet.insert_cols(3, 2) # 在第3列的左侧插入2列,原来的第3列变为第5列,左侧插入了2列空白列14、删除行、列
work_sheet.delete_rows(n) # 删除第n行,原第n+1行变为第n行
work_sheet.delete_cols(m, n) # 删除从第m列开始,向右数n-1列。
例如:
work_sheet.delete_rows(3) # 删除第3行,原第4行现变为第3行
work_sheet.delete_cols(3, 2) # 删除第3列、第4列,原第5列向左前进2列,变为第3列15、根据数字得到字母,根据字母得到数字
from openpyxl.utils import get_column_letter, column_index_from_string 或
import openpyxl
letter = openpyxl.utils.get_column_letter(2) # 返回第2列的字母,即字母“B”
number = openpyxl.utils.column_index_from_string(‘D’) # 返回D列的数字,即4例如:设置 B列 的列宽为25
column_number = 2
letter = openpyxl.utils.get_column_letter(column_number)
work_sheet.column_dimensions[letter].width = 25 # 设置B列的列宽16、设置行高和列宽
work_sheet.row_dimensions[2].height = 40 # 第2行的行高
work_sheet.column_dimensions[‘C’].width = 25 # C列的列宽17、合并和拆分单元格
(1)合并单元格,以合并区域的左上角的那个单元格为基准,覆盖其他单元格使之称为一个大的单元格。
(2)拆分单元格后将这个大单元格的值返回到原来的左上角位置。
(3)合并后只可以往左上角写入数据,也就是区间中:左边的坐标。
(4)如果这些要合并的单元格都有数据,只会保留左上角的数据,其他则丢弃。换句话说若合并前不是在左上角写入数据,合并后单元格中不会有数据。
work_sheet.merge_cells(‘A1:C3’)
或者
work_sheet.merge_cells(start_row=1, start_column=2, end_row=1, end_column=4)18、修改字体
from openpyxl.styles import Font
font = Font(name=u’宋体’,size = 11,bold=True,italic=True,strike=True,color=‘000000’)
work_sheet.cell(row=?, column=?, value=‘写入的内容’).font = font
或者
work_sheet.cell(row=?, column=?, value=‘写入的内容’).font = Font(u’宋体’,size = 11,bold=True,italic=True,strike=True,color=‘000000’)19、添加边框
from openpyxl.styles import Border, Side
border = Border(left=Side(border_style=‘thin’, color=‘000000’),
right=Side(border_style=‘thin’, color=‘000000’),
top=Side(border_style=‘thin’, color=‘000000’),
bottom=Side(border_style=‘thin’, color=‘000000’))
work_sheet.cell(row=2, column=2, value=‘uiofsfwewcssdwfdsdwa’).border = border
或者
work_sheet.cell(row=2, column=2, value=‘uiofsfwewcssdwfdsdwa’).border = Border(left=Side(border_style=‘thin’, color=‘000000’),
right=Side(border_style=‘thin’, color=‘000000’),
top=Side(border_style=‘thin’, color=‘000000’),
bottom=Side(border_style=‘thin’, color=‘000000’))20、修改表格对其方式
from openpyxl.styles import Alignment
alignment = Alignment(horizontal=‘left’, vertical=‘bottom’,wrap_text=True)
work_sheet.cell(row=2, column=2).alignment = alignment
或者
work_sheet.cell(row=2, column=3).alignment = Alignment(horizontal=‘center’, vertical=‘center’, wrap_text=True)21、获取 Excel文件中的表有多少个
quantity = work_sheet = work_book._active_sheet_index
返回值是一个整数,如果 Excel文件中有3张表,则quantity=2,计数是从“0”开始的。后续的补充:
22、冻结单元格
work_sheet.freeze_panes = ‘B3’
冻结“B3”单元格