from openpyxl import *
import os
from openpyxl.styles import NamedStyle,colors,Font,Border,Side
test=os.path.abspath(__file__)
print(test)
file_path='126邮箱联系人.xlsx'
#定义一个Excel的变量
class ExcelUtil():
def __init__(self,file_path:object)->object:
self.file_path=file_path
if not os.path.exists(file_path) or not (".xls" in file_path):
print("指定的excel文件路径%s不存在,或者文件类型不是xlsx" % file_path)
else:
self.wb=load_workbook(file_path)
print("加载excel%s文件成功"%file_path)
def get_sheet_names(self):
return self.wb.sheetnames
def set_sheet_by_name(self,sheet_name):
if not sheet_name in self.get_sheet_names():
print("设定的sheet:%s不存在,请重新 设定!"%sheet_name)
return
self.sheet=self.wb[sheet_name]
return self.sheet
def get_a_line(self,row_no):
rows=[]
for row in self.sheet.iter_rows():
rows.append(row)
if not isinstance(row_no,int):
print("输入的选号%s不是一个整数"%row_no)
if not 0<=row_no<len(rows):
print("输入的行号%s超过行数范围" % row_no)
return None
return rows[row_no]
#实例11:获取行的值(这里是第1行的值)
def get_a_line_values(self,row_no):
values=[]
for cell in self.get_a_line(row_no):
values.append(cell.value)
return values
def get_a_column(self,col_no):
cols=[]#存储一下列对象
for col in self.sheet.iter_cols():
cols.append(col)#遍历所有的列
if not isinstance(col_no, int):
print("输入的选号%s不是一个整数" % col_no)
if not 0 <= col_no < len(cols):
print("输入的行号%s超过行数范围" % col_no)
return None
return cols[col_no]
#获取最大的行是多少
def get_max_row_no(self):
return self.sheet.max_row
#获取最大列的是多少
def get_max_col_no(self):
return self.sheet.max_column
def create_new_sheet(self,sheet_name):
if sheet_name in self.get_sheet_names():
return
self.wb.create_sheet(sheet_name)
# 实例13写入行与列
def write_cell_value(self,row_no,col_no,value,colour=None):
if (not isinstance(row_no,int)) or (not isinstance(col_no,int)):
print("输入的行号%s或者列号%s有误"%(row_no,col_no))
return None
if "red" in colour:
self.sheet.cell(row=row_no+1,column=col_no+1).font=Font(color=colors.RED)
elif "green" in colour:
self.sheet.cell(row=row_no+1,column=col_no+1).font=Font(color=colors.GREEN)
else:
self.sheet.cell(row=row_no+1,column=col_no+1).font=Font(color=colors.BLACK)
bd=Side(style="thin",color="000000")
#这行代码代表把整个要写入到单元格的信息边框设置为黑色
self.sheet.cell(row=row_no+1,column=col_no+1).border=Border(left=bd,right=bd,top=bd,bottom=bd)
# 把值写入到对应的cell里面
self.sheet.cell(row=row_no+1,column=col_no+1).value=value
def save(self):
return self.wb.save(self.file_path)
if __name__=="__main__":
ExcelPath=ExcelUtil(file_path)
print(ExcelPath.set_sheet_by_name("联系人1"))
# print(ExcelPath.get_a_line(2))
# :\pythonExcise\0511Excel+other.py
# 加载excel126邮箱联系人.xlsx文件成功
# <Worksheet "联系人1">
# (<Cell '联系人1'.A3>, <Cell '联系人1'.B3>, <Cell '联系人1'.C3>, <Cell '联系人1'.D3>, <Cell '联系人1'.E3>, <Cell '联系人1'.F3>, <Cell '联系人1'.G3>, <Cell '联系人1'.H3>)
# print(ExcelPath.get_a_line_values(2))
# <Worksheet "联系人1">
# (<Cell '联系人1'.A2>, <Cell '联系人1'.B2>, <Cell '联系人1'.C2>, <Cell '联系人1'.D2>, <Cell '联系人1'.E2>, <Cell '联系人1'.F2>, <Cell '联系人1'.G2>, <Cell '联系人1'.H2>)
# [2, '访问126首页', 'visit', None, 'http://mail.126.com', 'y', None, None]
# print(ExcelPath.get_a_column(5))
print(ExcelPath.get_cell_values(1,1))
# # E:\pythonExcise\0511Excel+other.py
# # 加载excel126邮箱联系人.xlsx文件成功
# # <Worksheet "联系人1">
# # 打开浏览器
#指定要写入的sheet,写入时一定要执行保存Excel中对应的路径
print(ExcelPath.create_new_sheet('0511zsq_test'))
print(ExcelPath.set_sheet_by_name("0511zsq_test"))
print(ExcelPath.write_cell_value(1,1,"晚上好!","Green"))
# # E:\pythonExcise>python 0511Excel+other.py
# # E:\pythonExcise\0511Excel+other.py
# # 加载excel126邮箱联系人.xlsx文件成功
# # <Worksheet "联系人1">
# # 打开浏览器
# # None
# # <Worksheet "0511zsq_test">
# # None
ExcelPath.save()