Openpyxlを放棄し、xlwings(python操作xls)を抱擁する


xlwings基礎操作
  • openpyxlを放棄する基礎理由:1 xlsファイル処理をサポートしない;②現在のバージョンのスタイルで保存されているバグはまだ解決されていない.
  • 上記の2つの問題に遭遇したら、openpyxlを直接放棄し、xlwingsを抱擁しましょう.道はありません.
  • xlwingsドキュメントは国内での検索が基本的に少なく、以下が基本的なセル操作である.

  • 以下のように満たされていない場合は、Office操作ドキュメントを参照してください.xlwingsはapiを調整することができます.
    # coding=utf-8
    import xlwings as xw
    #          
    app = xw.App(visible=False, add_book=False)
    
    # ===============      ,        =====================
    #     test2.xlsx ,     
    # wb = app.books.add()
    # ws = wb.sheets.active
    # arr = []
    # for col in range(1,4):
    #     arr_temp = []
    #     for row in range(1,4):
    #         arr_temp.append(col*10+row)
    #     arr.append(arr_temp)
    # ws.range('A1:B3').value=arr
    # wb.save('data/test2.xlsx')
    # wb.close()
    # app.quit()
    # exit()
    
    # ==============     ,  、      ========================
    
    #      demo  
    load_wb = app.books.open('data/test2.xlsx')
    # #               ,        
    load_ws = load_wb.sheets.active
    # load_ws = load_wb.sheets['Sheet']
    
    #      (    )
    rows = load_ws.api.UsedRange.Rows.count
    cols = load_ws.api.UsedRange.Columns.count
    # print('      :'+str(rows)+'  ')
    # print('      :'+str(cols)+'  ')
    # exit()
    
    
    # 1-①       2 (    :   2-4      )
    # load_ws.api.rows('2:4').insert
    # 1-②   2-4 
    # load_ws.api.rows('2:4').delete
    # 2-①       2 (         ,              ,       )
    # load_ws.range('B1:C'+str(cols)).api.insert
    # 2-②   2-4 
    # load_ws.range('B1:C'+str(cols)).api.delete
    
    # ==============     ,          ========================
    # load_ws.range('A1').value = 'x11'
    
    # ==============     ,      ========================
    # load_ws.range('A1:A2').api.merge
    
    # ==============     ,         index ========================
    rng=xw.Range('B2')
    #          
    # print(rng.row)
    #          
    # print(rng.column)
    #                
    print(rng.width)
    print(rng.height)
    rng.row_height=40
    rng.column_width=50
    #               
    # rng.columns.autofit()
    rng.rows.autofit()
    print(rng.width)
    print(rng.height)
    # load_ws.range('A1:A2').api.height = 20
    
    
    # ==============     ,   ========================
    # lst=load_ws.range('A1:A'+str(load_ws['A1048576'].end('up').row)).value # excel         
    # lst1=load_ws.range('A1:C'+str(load_ws['A1048576'].end('up').row)).value #  excel             
    # lst=load_ws.range('A1:A'+str(load_ws['A1048576'].end('up').row)).value #A   
    # lst2=load_ws.range('C1:C'+str(load_ws['A1048576'].end('up').row)).value#C   
    # lst3=list(zip(lst,lst2))#          
    # dicta=dict(lst3)#      
    
    # ==============     ,Office     ========================
    # https://docs.microsoft.com/en-us/office/vba/api/excel.range(object)
    
    
    
    load_wb.save()
    load_wb.close()
    app.quit()