# !/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)
