學習Excel+Python編程(一)

By 高煥堂

 

1. 前言

   從一個簡單的範例,來說明如何在Excel框架裡,填寫其按鈕(Button)背後的Python程式碼(代碼)。以極為簡潔的形式,讓不懂編程的人人迅速掌握AI深度學習的核心觀念和技術。同時,也讓熟悉編程的工程師或老師們都可以輕易把Python程式配上Excel 的簡潔UI(User Interface),也就是把Python程式碼隱藏於Excel的button幕後。把AI的Python應用程式馬配上了Excel UI,就能讓人人都能輕易與AI互動。

 

(圖片部分引自百度圖片)

   就像一位開車的人,手操控方向盤,眼睛看儀板表,就能駕駛汽車(AI 應用)。所以,我出版了一本《不編程,而學AI:Excel + TensorFlow》書籍,其本意並非不要Python編程,而是一項富有愛心的表現,由工程師們在幕後默默為所有人(如中小學生)而編程。由於學習編程是一件費時費力的事情,只要由少數人去學去做即可,其他人皆可以直接學AI。要學習AI,不一定要先學Python編程。例如,由於我是Python的編程高手,非常擅長於寫代碼生成器(Code Generator),來自動產生代碼,來替所有人寫Python程式。

  在本文裡,我開始教您自己來動手撰寫簡單的Excel + Python,設計簡單的Excel UI給學生,以第1人稱去操作Excel UI。如同親自學開車一樣的體驗,而不是上課只聽老師的旁白,介紹抽象的非綫性代數,微積分,並沒有親自學開車的感覺。

  雖然使用Keras來提供UI 也可以,但是在教學上非常困難,因為每一支AI App的UI都不一樣,其操作方法都要老師去也講解一遍,而且幕後使用的UI支援軟體都不一樣。

  如今,使用大家已經很熟悉的Excel操作介面,只要搭配Open CV來提供繪圖。此時,在學校課堂內,先安裝好Open CV即可,不必隨時安裝其他繪圖軟體,這Excel提供的統一簡潔的UI,對老師的教學幫助非常大,大幅減輕老師的負擔。

 

2. 開始創新製作Excel+Python代碼

2.1  製作一個Excel工作表(Workbook)

  • 預先安裝:Python、TensorFlow、xlwings
  • 開啟Excel:

  

  • 點選<Microsoft Excel 2010>,Excel開啟一個空白工作表(Workbook)

 

  • 輸入Meta data如下:

 

  • 按下<Alt-F11>,準備匯入xlwings.bas檔案:

 

  • 點選<檔案->匯入檔案>:

 

  • 在剛才所安裝xlwings的文件夾裡可以找到xlwinf.bas檔案: 

 

  • 按下<開啟>,就匯入了。

 

  • 點擊 ,返回工作表畫面:

  

2.2  在工作表上設計一個按鈕(Button)

  • 如果您還沒設定為<開發人員>,請先設定為<開發人員>,步驟如下:
  • 點選<檔案 -> 選項>

  • 勾選<開發人員>

 

  • 設定完畢了
  • 返回到工作表(出現了<開發人員>選項)

 

  • 點選右上角的<開發人員 -> 插入>:

  • 拖拉出一個按鈕(位於<表單控制項的左上角>)
  • 並且輸入名稱:”OK”

 

  • 接下來,定義VBA巨集
  • 選取OK按鈕,點擊右鍵:

 

  • 點選<指定巨集>:

 

  • l按下<新增>:

 

  • 寫入VBA
  • 程式碼:RunPython(“from abcex01 import f1; f1()”)

 

  • 關閉視窗:

 

  • 點擊,返回工作表畫面:

 

  • 點選<檔案 -> 另存新檔>:

 

  • 輸入檔案名稱:

 

  • 點選<存檔類型(T)>,出現: 

 

  • 點選<Excel啟用巨集的範本>,亦即<xltm>類型: 

 

  • 選擇儲存文件夾(例如C:\Users\Queena\),然後按下<儲存>,就存檔了。
  • 可以瀏覽C:\Users\Queena\,可以看到這個abc_wb01.xltm新檔案:

 

2.3  撰寫Python程式碼 

  • 撰寫Python程式(並存檔):abc01.py

 

  • 撰寫Python程式(並存檔):abcex01.py 

 

  • 製作完成了,請關閉Excel。 

2.4  測試一下

  • 在Python環境裡,執行abc01.py
  • 出現Excel工作表畫面:

 

  • 按下<OK>按鈕,就呼叫到abcex01.py裡的f1()函數
  • 顯示出:

 

 

3.  如何更新您的創作

  • 剛才已經設計了abc01.py來叫出的Excel工作表,也在Excel的Button幕後撰寫了abcex01.py。
  • 只要人們按下Button就可以呼叫到abcex01.py裡的函數了。

3.1 更新Excel工作簿(Workbook)設計

  • 現在,開始動手吧。
  • 在Python環境裡,執行abc01.py
  • 出現Excel工作表畫面:

 

  • 接下來,修改VBA巨集
  • 選取OK按鈕,點擊右鍵:

 

  • 點選<指定巨集>:
  • 寫入VBA
  • 程式碼:RunPython(“from abcex02 import f1; f1()”)

 

  • 關閉視窗:

 

  • 點擊,返回工作表畫面:

 

  • 點選<檔案 -> 另存新檔>: 

 

  • 輸入(修改)檔案名稱:

 

  • 選取<xltm>檔案型別: 

 

  • 選擇儲存文件夾(例如C:\Users\Queena\),然後按下<儲存>,就存檔了。
  • 可以瀏覽C:\Users\Queena\,可以看到這個abc_wb02.xltm新檔案:

 

  • 關閉Excel。 

3.2  更新Python程式碼

  • 撰寫Python程式(並存檔):abc02.py

 

  • 撰寫Python程式(並存檔):abcex02.py

 

  • 製作完成了。

3.3  測試一下

  • 在Python環境裡,執行abc02.py
  • 出現Excel工作表畫面:

 

  • 按下<OK>按鈕,就呼叫到abcex02.py裡的f1()函數
  • 顯示出:

 

4. 銜接到TensorFlow

  • 各位老師可以修改abcex02.py。
  • 它可以讀取Excel工作表裡的AI訓練資料(Training data)。
  • 它也可以Import TensorFlow,把訓練資料轉送給TensorFlow,就能夠進行AI模型訓練了。

~ End ~

==> 返回首頁