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")