1. 程式人生 > >插上翅膀,讓Excel飛起來——xlwings(一)

插上翅膀,讓Excel飛起來——xlwings(一)

圖片 pos 取數據 數組 並保存 () 讀取 pda 取數

python操作Excel的模塊,網上提到的模塊大致有:xlwings、xlrd、xlwt、openpyxl、pyxll等,他們提供的功能歸納起來有兩種:一、用python讀寫Excel文件,實際上就是讀寫有格式的文本文件,操作excel文件和操作text、csv文件沒有區別,Excel文件只是用來儲存數據。二、除了操作數據,還可以調整Excel文件的表格寬度、字體顏色等。另外需要提到的是用COM調用Excel的API操作Excel文檔也是可行的,相當麻煩基本和VBA沒有區別。

技術分享圖片
xlwings官網.png


xlwings的特色

  • xlwings能夠非常方便的讀寫Excel文件中的數據,並且能夠進行單元格格式的修改
  • 可以和matplotlib以及pandas無縫連接
  • 可以調用Excel文件中VBA寫好的程序,也可以讓VBA調用用Python寫的程序。
  • 開源免費,一直在更新

    基本操作

技術分享圖片
xlwings基本對象
  1. 打開已保存的Excel文檔
     # 導入xlwings模塊,打開Excel程序,默認設置:程序可見,只打開不新建工作薄,屏幕更新關閉
     import xlwings as xw
     app=xw.App(visible=True,add_book=False)
     app.display_alerts=False
     app.screen_updating=False
     # 文件位置:filepath,打開test文檔,然後保存,關閉,結束程序
     filepath=r‘g:\Python Scripts\test.xlsx‘
     wb=app.books.open(filepath)
     wb.save()
     wb.close()
     app.quit()
  2. 新建Excel文檔,命名為test.xlsx,並保存在D盤。
     import xlwings as xw
     app=xw.App(visible=True,add_book=False)
     wb=app.books.add()
     wb.save(r‘d:\test.xlsx‘)
     wb.close()
     app.quit()
  3. 在單元格輸入值
    新建test.xlsx,在sheet1的第一個單元格輸入 “人生” ,然後保存關閉,退出Excel程序。
     import xlwings as xw
     app=xw.App(visible=True,add_book=False)
     wb=app.books.add()
     # wb就是新建的工作簿(workbook),下面則對wb的sheet1的A1單元格賦值
     wb.sheets[‘sheet1‘].range(‘A1‘).value=‘人生‘
     wb.save(r‘d:\test.xlsx‘)
     wb.close()
     app.quit()
    打開已保存的test.xlsx,在sheet2的第二個單元格輸入“苦短”,然後保存關閉,退出Excel程序
     import xlwings as xw
     app=xw.App(visible=True,add_book=False)
     wb=app.books.open(r‘d:\test.xlsx‘)
     # wb就是新建的工作簿(workbook),下面則對wb的sheet1的A1單元格賦值
     wb.sheets[‘sheet1‘].range(‘A1‘).value=‘苦短‘
     wb.save()
     wb.close()
     app.quit()
    掌握以上代碼,已經完全可以把Excel當作一個txt文本進行數據儲存了,也可以讀取Excel文件的數據,進行計算後,並將結果保存在Excel中。

引用工作簿、工作表和單元格

  1. 引用工作簿,註意工作簿應該首先被打開
     wb.=xw.books[‘工作簿的名字‘]
  2. 引用活動工作簿
     wb=xw.books.active
  3. 引用工作簿中的sheet
     sht=xw.books[‘工作簿的名字‘].sheets[‘sheet的名字‘]
     # 或者
     wb=xw.books[‘工作簿的名字‘]
     sht=wb.sheets[sheet的名字]
  4. 引用活動sheet
     sht=xw.sheets.active
  5. 引用A1單元格
     rng=xw.books[‘工作簿的名字‘].sheets[‘sheet的名字‘]
     # 或者
     sht=xw.books[‘工作簿的名字‘].sheets[‘sheet的名字‘]
     rng=sht.range(‘A1‘)
  6. 引用活動sheet上的單元格
     # 註意Range首字母大寫
     rng=xw.Range(‘A1‘)
    其中需要註意的是單元格的完全引用路徑是:
       # 第一個Excel程序的第一個工作薄的第一張sheet的第一個單元格
       xw.apps[0].books[0].sheets[0].range(‘A1‘)
    迅速引用單元格的方式是
       sht=xw.books[‘名字‘].sheets[‘名字‘]
       # A1單元格
       rng=sht[’A1‘]
       # A1:B5單元格
       rng=sht[‘A1:B5‘]
       # 在第i+1行,第j+1列的單元格
       # B1單元格
       rng=sht[0,1]
       # A1:J10
       rng=sht[:10,:10]

PS: 對於單元格也可以用表示行列的tuple進行引用

      # A1單元格的引用
      xw.Range(1,1)
      #A1:C3單元格的引用
      xw.Range((1,1),(3,3))

儲存數據

  1. 儲存單個值
       # 註意".value“
       sht.range(‘A1‘).value=1
  2. 儲存列表
        # 將列表[1,2,3]儲存在A1:C1中
        sht.range(‘A1‘).value=[1,2,3]
        # 將列表[1,2,3]儲存在A1:A3中
        sht.range(‘A1‘).options(transpose=True).value=[1,2,3] 
        # 將2x2表格,即二維數組,儲存在A1:B2中,如第一行1,2,第二行3,4
       sht.range(‘A1‘).options(expand=‘table‘)=[[1,2],[3,4]]

讀取數據

  1. 讀取單個值
     # 將A1的值,讀取到a變量中
     a=sht.range(‘A1‘).value
  2. 將值讀取到列表中
     #將A1到A2的值,讀取到a列表中
     a=sht.range(‘A1:A2‘).value
     # 將第一行和第二行的數據按二維數組的方式讀取
     a=sht.range(‘A1:B2‘).value


作者:LuckyFrog
鏈接:http://www.jianshu.com/p/e21894fc5501
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請註明出處。

插上翅膀,讓Excel飛起來——xlwings(一)