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)

python创建excel,增加数据,读取特定行数据,读取特定列数据