import xlrd # 01.打开excel文件,创建一个文件数据对象 data = xlrd.open_workbook('/home/python/Desktop/excel/test1.xls') # print(data) # 02.获取一张表 # table = data.sheets()[0] # 1.通过索引获取 # table = data.sheet_by_index(0) # 2.通过函数获取索引 table = data.sheet_by_name('Sheet1') # 3.通过表名获取 # print(table) # 03.获取行或者列的值(数组) # print(table.row_values(0, start_colx=1, end_colx=3)) # 获取行,限制列 # row_values()包含3个参数: # 1.第几行,从0开始; # 2.首列:start_colx=0; # 3.尾列:end_colx=None;(左闭右开) # >>> [1.0, '大神', '裸男', '狗东西'] # >>> ['大神', '裸男'] # print(table.col_values(0, start_rowx=1, end_rowx=5)) # 获取列,限制行 # >>> ['大神', '裸男'] # >>> [2.0, 3.0, 4.0, 5.0] # 04.获取行数和列数 # print(table.nrows) # print(table.ncols)
import xlwt # 1.创建excel文件 test_excel = xlwt.Workbook(encoding="ascii") # 2.创建表 test_sheet = test_excel.add_sheet('sheet01') print(dir(test_sheet)) # 3.边框粗线 borders = xlwt.Borders() # Create borders borders.left = xlwt.Borders.MEDIUM borders.right = xlwt.Borders.MEDIUM borders.top = xlwt.Borders.MEDIUM borders.bottom = xlwt.Borders.MEDIUM # 4.字体加粗 font = xlwt.Font() font.bold = True # 5.居中 al = xlwt.Alignment() al.horz = 0x02 # 设置水平居中 al.vert = 0x01 # 设置垂直居中 style = xlwt.XFStyle() # Create style style.borders = borders # Add borders to style style.alignment = al style.font = font # 6.合并单元格 test_sheet.write_merge(1, 2, 0, 3, 'Second Merge', style) # 7.往表中内写入数据 test_sheet.write(0, 0, label="写一点东西") # 指定单元格写入数据 # 8.保存excel文件 test_excel.save('xlwt_demo.xls')
from openpyxl import load_workbook # 1.读取文件 # ①引入文件,创建对象 # wb = load_workbook("/home/python/Desktop/excel/test2.xlsx") # print(wb) # 打印表名 # print(wb.sheetnames) # ②获取指定表 # sheet = wb.get_sheet_by_name("Sheet2") # print(sheet) # 获取指定位置内容对象 # print(sheet["B"]) # 第b列对象 # print(sheet['2']) # 第2行对象 # print(sheet['B2'].value) # 显示指定单元格信息 # print(sheet.max_row) # 显示存在数据最大行数 # print(sheet.max_column) # 显示存在数据最大列数 # 遍历 # for i in sheet['B']: # print(i.value, end="") # 原本获取的数据是带空格的 # 2.写入文件 from openpyxl import Workbook # 创建文件对象 # wb = Workbook() # # 创建当前工作表的对象 # sheet_obj = wb.active # print(sheet_obj) # # 重命名当前工作表 # sheet_obj.title = "Mysheet" # 添加表 | 添加的表已经被active # sheet_obj1 = wb.create_sheet('Ursheet') # print(sheet_obj1) # 删除表 #... # # 往表中写入数据 # sheet_obj1['B2'] = "hello world" # for i in range(10): # sheet_obj1["A%d" % (i+1)].value = i+1 # 给A列指定行数添加数据 # # 可以将excel中的函数操作,在python中用字符串写入 # sheet_obj1["C1"].value = "=SUM(A:A)" # 保存表数据 # wb.save("test4.xlsx")
import xlrd import xlwt from xlutils.copy import copy # 打开1.矩阵表20180214起.xlsx中第二张表 data = xlrd.open_workbook('1.矩阵表20180214起.xlsx') # 获取 矩阵表到员20180913更新 表 table = data.sheet_by_name('矩阵表到员20180913更新') # 遍历所有行,将W,H列构建字典 groups = table.col_values(7, start_rowx=7, end_rowx=724) tels = table.col_values(55, start_rowx=7, end_rowx=724) keys = table.col_values(22, start_rowx=7, end_rowx=724) total_dict = {} for i in range(len(keys)): if keys[i] and keys[i] != "/": total_dict[keys[i]] = { "group": groups[i], "tel": tels[i], } # 读取 data02 = xlrd.open_workbook('员工工号20181011.xlsx') table02 = data02.sheets()[0] # 读取人名 name_list = table02.col_values(9, start_rowx=2, end_rowx=473) temp_list = [] for name in name_list: try: name = total_dict[name] except: name = "" temp_list.append(name) # 写入 new_excel = copy(data02) sheet01 = new_excel.get_sheet(0) # 14 j = 0 for i in range(2, 474): # 3-474 try: group_name = temp_list[j]["group"] except: group_name = "" try: tel = temp_list[j]["tel"] except: tel = "" sheet01.write(i, 14, group_name) sheet01.write(i, 15, tel) j += 1 new_excel.save("new_fileName.xls")