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”单元格