python创建excel,增加数据,读取特定行数据,读取特定列数据
# !/usr/bin/env python # -- coding: utf-8 -- ''' # 创建excel # 往excel写数据 #读取excel数据 #读取excel某一列所有数据数据存入列表 #读取excel某一行所有数据数据存入列表 ''' import xlrd import xlwt from xlutils.copy import copy from tqdm import tqdm from xml.dom.minidom import parse # 创建excel def createExcelXls(path, sheet_name, value): index = len(value) # 获取需要写入数据的行数 workbook = xlwt.Workbook() # 新建一个工作簿 sheet = workbook.add_sheet(sheet_name) # 在工作簿中新建一个表格 for i in range(0, index): for j in range(0, len(value[i])): sheet.write(i, j, value[i][j]) workbook.save(path) # 保存工作簿 print("xls create success!") # 往excel写数据 def appendContent2Excel(path, value): index = len(value) workbook = xlrd.open_workbook(path) sheets = workbook.sheet_names() worksheet = workbook.sheet_by_name(sheets[0]) rows_old = worksheet.nrows new_workbook = copy(workbook) new_worksheet = new_workbook.get_sheet(0) for i in range(0, index): for j in range(0, len(value[i])): new_worksheet.write(i + rows_old, j, str(value[i][j])) new_workbook.save(path) print("xls append success!") #读取excel数据 def readExcelConten(excel_path,sheetName="Sheet1"): excel_data = xlrd.open_workbook(excel_path) excel_table = excel_data.sheet_by_name(sheetName) # 获取第一行作为key值 excel_keys = excel_table.row_values(0) # 获取总行数 excel_row_num = excel_table.nrows # 获取总列数 excel_col_num = excel_table.ncols if excel_row_num <= 1: print("总行数小于1") else: all_row_content = [] j = 1 for i in list(range(excel_row_num - 1)): values = excel_table.row_values(j) all_row_content.append([values[0],str(values[1]),str(values[2]),values[3],values[4]]) j += 1 print(all_row_content) print("read excel success!") return all_row_content def readExcelSpecialColData(excel_path, sheet_name,read_col): worksheet = xlrd.open_workbook(excel_path) sheet_names = worksheet.sheet_names() print(sheet_names) # 目前是一张表,有多个标就循环了 col_all_content = [] for sheet_name in sheet_names: sheet = worksheet.sheet_by_name(sheet_name) rows = sheet.nrows # 获取行数 cols = sheet.ncols # 获取列数,尽管没用到 col_content = [] for i in range(int(rows)-1): col_cell = sheet.cell_value(i+1, int(read_col)) # 从第二行开始,取特定列数据 try: col_content.append(col_cell) except ValueError as e: pass col_all_content.append(col_content) print("read {} col success".format(str(read_col))) print(col_all_content) return col_all_content def readExcelSpecialRowData(excel_path, sheet_name,read_row): worksheet = xlrd.open_workbook(excel_path) sheet_names = worksheet.sheet_names() print(sheet_names) # 目前是一张表,有多个标就循环了 row_all_content = [] for sheet_name in sheet_names: sheet = worksheet.sheet_by_name(sheet_name) rows = sheet.nrows # 获取行数 cols = sheet.ncols # 获取列数,尽管没用到 row_content = [] for i in range(int(cols)-1): row_cell = sheet.cell_value(int(read_row), i+1) # 从第二行开始,取特定列数据 try: row_content.append(str(row_cell)) except ValueError as e: pass row_all_content.append(row_content) print("read {} row success".format(str(read_row))) print(row_all_content) return row_all_content if __name__ == "__main__": excel_path = r"D:\excelHandle.xls" sheet_name = "data_sheet" value_title = [["file_name", "row", "col", "coordinate", "type", "tw", "ok"]] createExcelXls(excel_path, sheet_name, value_title) value_list = [["D:/data/2020-10-14.jpg","5","3","2651.0,5435.0,2662.0,5471.0",2100,"",""], ["D:/data/2020-10-13.jpg","4","1","8959.0,2202.0,8971.0,2242.0",2200,"",""], ["D:/data/2020-10-14.jpg","3","2","6460.0,4300.0,6526.0,4391.0",2300,"",""]] appendContent2Excel(excel_path,value_list) row_content_list = readExcelConten(excel_path,sheet_name) readExcelSpecialColData(excel_path,sheet_name,1) readExcelSpecialRowData(excel_path, sheet_name, 2)