xlrdとxlwtパッケージ、excelドキュメントのセル内容の変更、削除、行の挿入、削除を実現

2542 ワード

xlwtは既存のexcelドキュメントを変更できません.ここでは、xlrdとxlwtに基づいて、行の挿入、削除、セルの内容の変更、セルの内容の削除など、excelドキュメントを変更する機能を実現しました.制限:xlsxファイルは開くことができますが、xlsファイルしか生成できません.数式とマクロが失われました.注意:行と列は0からカウントされます.
#coding=UTF-8
#python 3.4 3.6
#excel 2007
#author=liuyifan
#date=20171102
#xlrd 1.1
#xlwt 1.3
'''
 xlrd xlwt   
     excel    ,    、   ,       、       。
  :
    xls  。 :    xlsx  。
       。
  :
      0    
'''

import xlrd 
import xlwt

class Excel():
    def __init__(self,file_name):
        self.file=file_name
    
    # sheet    copy      ,        
    #  xlrd       ,     
    #  copy     copy  ,excel          。      。
    def sheet_into_list(self,sheet_index=0):
        sheet_list=[]
        with xlrd.open_workbook(self.file) as f: 
            #  excel   sheet
            table=f.sheet_by_index(sheet_index)
            #         
            #nrows sheet   
            for row in range(0,table.nrows): 
                sheet_list.append([])
                #    row_len(rowx)
                for col in range(0,table.ncols):
                    sheet_list[row].append(table.row_values(row)[col]) 
        return sheet_list
    
    #         copy excel   ,        
    #double_list     
    def list_into_sheet(self,double_list):
        book=xlwt.Workbook()
        #      login_result sheet
        sheet=book.add_sheet("result")
        #              sheet 
        for i in range(len(double_list)):
            for j in range(len(double_list[i])):
                sheet.write(i,j,double_list[i][j])
        #  excel ,   "login_xlsx_result.xls",          ,      
        #    .xlsx  ,      ,        
        book.save("result.xls")   
    
    #    excel  
    def copy_excel(self):    
        return self.list_into_sheet(self.sheet_into_list())
    
    #   
    #            ,     
    def del_row(self,row,new_file=None):
        if new_file==None:
            new_file=self.file
        double_list=self.sheet_into_list()
        book=xlwt.Workbook()
        #      result sheet
        sheet=book.add_sheet("result")
        #xlwt      cell 
        #                 
        for i in range(len(double_list)):
            for j in range(len(double_list[i])):
                if(i