hzyimen
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()

 

分类:

技术点:

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-10-17
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-10-23
猜你喜欢
  • 2022-12-23
  • 2021-12-13
  • 2021-11-11
  • 2022-03-09
  • 2021-06-26
  • 2022-12-23
相关资源
相似解决方案