1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159
| #!/usr/bin/env python3 # -*-coding: utf-8 -*- """ @author: kyle @time: 2019/7/18 13:17 """ import openpyxl
def load_excel(filename): """ 加载excel :param filename: :return: """ # 加载execl文件 wb = openpyxl.load_workbook(filename) return wb
def get_excel(filename, sheetname): """ 获取excel行、列数 :param filename: 待读取文件名 :param sheetname: 列名 :return: 行、列数 """ wb = load_excel(filename) # 指定读取sheet页 sheet = wb[sheetname] # 获取最大行数 nrows = sheet.max_row ncols = sheet.max_column return nrows, ncols
def read_excels(filename, sheetname): """ 读取excel所有数据 :param filename: 待读取文件 :param sheetname: 带读取sheet页 :return: 数据 """ # 获取指定sheet页 wb = load_excel(filename) sheet = wb[sheetname] # 获取最大行、列数 nrow = get_excel(filename, sheetname)[0] ncol = get_excel(filename, sheetname)[1] # 读取数据 testdata = [] for i in list(range(1, nrow+1)): tmplist = [] for j in list(range(1, ncol+1)): tmplist.append(sheet.cell(row=i, column=j).value) testdata.append(tmplist) return testdata
def read_excel(filename, sheetname, col): """ 读取excel指定列,返回数据列表 :param filename: 带读取excel文件 :return: 列数据 """ # 获取指定sheet页 wb = load_excel(filename) sheet = wb[sheetname] # 获取最大行数 nrows = get_excel(filename, sheetname)[0] # 获取数据 testdata = [] for i in list(range(2, nrows+1)): testdata.append(sheet.cell(row=i, column=col).value) return testdata
def write_excel(filename, sheetname, colname, col, testdata): """ 已知数据集,写数据到指定列 :param filename: 待写数据文件 :param sheetname: 待写数据页签 :param colname: 待写数据列名 :param col: 待写数据列 :param testdata: 待写数据集(列表格式) :return: """ # 激活写页签 wb = load_excel(filename) sheet = wb[sheetname]
# 写入列标题 sheet.cell(row=1, column=col, value=str(colname)) # 写入数据 # 写数据 for i in range(2, len(testdata) + 1): sheet.cell(row=i, column=col, value=str(testdata[i-2])) # 写入缺失的最后一行数据 max_row = len(testdata) + 1 sheet.cell(row=max_row, column=col, value=str(testdata[-1])) # 保存文件 wb.save(filename)
def write_col(filename, wfilename, sheetname, wsheetname, colname, col, colnumber): """ 先读取,再写数据到指定列 :param filename: 数据读取文件 :param wfilename: 待写数据文件 :param sheetname: 读取数据页签 :param wsheetname: 待写数据页签 :param colname: 写数据列名 :param col: 读数据列序号 :param colnumber: 写数据列序号 :return: None """ # 激活写页签 wb = load_excel(wfilename) sheet = wb[wsheetname]
# 写入列标题 sheet.cell(row=1, column=colnumber, value=str(colname)) # 写入数据 # 读取待写数据 testdata = read_excel(filename, sheetname, col) # 写数据 for i in range(2, len(testdata)+1): sheet.cell(row=i, column=colnumber, value=str(testdata[i-2])) # 写入缺失的最后一行数据 max_row = len(testdata) + 1 sheet.cell(row=max_row, column=colnumber, value=str(testdata[-1])) # 保存文件 wb.save(filename)
def write_data(filename, wfilename, sheetname, wsheetname, nrow, ncol): """ 写所有数据 :param filename: 读取文件 :param wfilename: 待写入文件 :param sheetname: 读数据页签 :param wsheetname: 待写数据页签 :param nrow: 写数据行数 :param ncol: 写数据列数 :return: """ # 激活写页签 wb = load_excel(wfilename) sheet = wb[wsheetname]
# 待写数据 testdata = read_excels(filename, sheetname)
# 写数据 for i in range(0, nrow): for j in range(0, ncol): sheet.cell(row=i+1, column=j+1, value=str(testdata[i][j])) wb.save(filename)
|