Excel as a Service ——Excel 開發居然可以這么玩
更新時間:2022-11-28
據不完全統計,全世界都在使用它Excel作為電子表格和數據處理的用戶數量為10億,這不僅是因為它使用簡單,而且因為它內置了許多強大的函數,可以結合你的想象力編寫各種公式,并根據數據快速生成圖表和透視分析。另一方面,Excel在整個Office無論是在客戶端,家庭也是開發者最多的組件VBA宏和VSTO插件開發和早年出現SharePoint Server中的Excel Service(包括用于呈現Excel文件的Web Part,以及一套XML Web Service可遠程調用Excel包括自定義在內的功能Excel函數等。
在Office 365的時代,SharePoint Online中已經將Excel Service刪除了2016年7月左右揭開神秘面紗的功能。Microsoft Graph Excel API,融入Microsoft Graph大家族的Excel Service快速迭代,其功能也趨于穩定。今天,我將用一個例子來介紹它奇妙的設計和應用場景。
范例介紹
想象一下,你用Excel通過輸入幾個參數,制作了一個非常強大的抵押貸款計算表Excel自帶的PMT函數計算月還款金額,因此快速生成還款計劃,如下圖所示:
PMT 根據固定支付金額和固定利率計算貸款支付金額的財務函數。如果您感興趣,請參考 https://support.office.com/zh-cn/article/PMT-函數-0214DA ** -9A63-4996-BC20-214433FA ** 41 的幫助。
同時,您還可以輕松生成數據列表和相應的圖表,如下圖所示
通過改變購買價格、利率、貸款期、貸款金額等單元格的價值,Excel會自動計算其他單元格的值,包括自動刷新圖表。所有這些都是大多數表兄弟非常熟悉的體驗。
那么問題來了:如果你想在一個網頁上實現抵押貸款計算的功能,你應該自己實現一次嗎?PMT這個函數的功能呢?我不知道,但我想你讀完這篇文章后會改變一些想法—— 我們可以完全給出這些計算Excel Service直接調用前端應用。
使用Microsoft Graph中的Excel API,您不僅可以訪問工作簿、工作表、單元格、表格和圖表,修改它們的屬性和值,甚至以圖片的形式讀取圖表,一切都在您的掌握之中。接下來,用示例代碼來展示這些美妙的場景。
Microsoft Graph Excel API請參考官方文件 https://developer.microsoft.com/en-us/graph/docs/api-reference/v1.0/resources/excel使用Microsoft Graph 獲取工作簿和單元格
要使用Micrsosoft Graph Excel API,你只需要將Excel文件放到OneDrive for Business或者SharePoint Online可以在文檔庫中使用。例如,我把演示文件放在目錄中:
你需要知道一些Microsoft Graph背景知識,如果你是對的Microsoft Graph不熟悉。我建議你參考我之前的兩篇文章
Microsoft Graph 概述通過Graph Explorer體驗Microsoft Graph
本文采用的方法是使用Graph Explorer這樣操作Microsoft Graph Excel API。我的文件在OneDrive for Business 個人云盤根目錄下方testgraph文件名稱在目錄中 demofile.xlsx,所以我可以用GET https://graph.microsoft.com/v1.0/me/drive/root:/testgraph/demofile.xlsx:/workbook拿到這本工作簿
通過 GET https://graph.microsoft.com/v1.0/me/drive/root:/testgraph/demofile.xlsx:/workbook/worksheets 在工作簿中獲得所有工作表信息
通過 GET https://graph.microsoft.com/v1.0/me/drive/root:/testgraph/demofile.xlsx:/workbook/worksheets/抵押計算器/range(address='c4';)可獲得名為抵押計算器的工作表C4單元格對象
當然,單元格對象也可以通過名稱訪問,語法是 GET https://graph.microsoft.com/v1.0/me/drive/root:/testgraph/demofile.xlsx:/workbook/names/每月還金額 這樣的
您還可以返回多個單元格的值,比如下面的查詢 GET https://graph.microsoft.com/v1.0/me/drive/root:/testgraph/demofile.xlsx:/workbook/worksheets/抵押計算器/range(address='c4:c6')/values
更新單元格內容
在上一節中,我用幾種不同的語法展示了如何獲得工作簿、工作表和單元格(包括直接查詢其值)。如果我們想修改單元格的值,我們該怎么辦?以下示例展示了如何在工作表中命名為抵押計算器C4的值修改為新值,如4萬.
需要注意的是,我們通常使用查詢數據API請求方法是GET,修改數據所需的請求方法是PATCH。為實現上述單元格修改要求,要執行的查詢是 PATCH https://graph.microsoft.com/v1.0/me/drive/root:/testgraph/demofile.xlsx:/workbook/worksheets/抵押計算器/range(address='c4&同時,#39;還需要提供新的值。
{values:[[400000]]}PATCH該方法可以局部更新目標對象。我們只提供上述代碼Values這個屬性 ** ,但也可以添加其他屬性,以達到一次修改多個屬性的目的。
執行成功后,你會發現C40000變成了4萬。
我在這里埋了一個伏筆,如果你在程序中以上述方式修改了單元格(A)然后獲得另一個單元格的值(B)假設B跟A有一種公式關系,你可能期望B的值會立即刷新。但事實上,它不會。這里涉及到一些相對復雜的概念,即Excel API有兩種訪問模式。我們現在使用的是所謂的非持久會話模式。它通常用于查詢數據或修改后不保存。因此,在下一次查詢中,您實際上獲得了舊值。 關于如何創建持久會話,并在多個查詢中共享,請參考 https://developer.microsoft.com/en-us/graph/docs/api-reference/v1.0/api/workbook_createsession 詳細說明。在工作表中獲取圖表
我們已經知道如何訪問工作簿的單元格,如何更新它們的值,這使得我們很容易實現許多業務場景:你可以Excel做很多復雜的公式,設計數據之間的關系,然后通過API修改某些單元格的值,然后獲得其他單元格的值。你的應用程序似乎很相似Excel神奇的功能,但事實上,一切仍然存在Excel默默為你服務,你所做的就是調用一兩個接口。
接下來,我們將演示一個有趣的場景,以圖片的形式提取工作表中的圖表。這個場景特別適合我們處理數據,然后希望在前端應用程序中顯示圖表。Excel API一個圖表可以用一個圖表Base ** 以字符串的形式返回,客戶端可以使用此圖片顯示。
其實聽起來很神秘的東西只是一件事GET請求而已 GET https://graph.microsoft.com/v1.0/me/drive/root:/testgraph/demofile.xlsx:/workbook/worksheets/charts/圖表1/i ** ge
接口返回的結果是一串又長又長的字符串,你肯定看不懂。你要做的就是把這個字符串起來 ** 出來,然后使用文本編輯器新建文件,然后填寫以下內容
接下來,將此保存為一個html文件,然后在瀏覽器中打開它。你認為下面的圖表似曾相識嗎?恭喜你回答對了。事實上,這個圖表以前是Excel文件中的那個。
結語
我在很多場合都分享過Office 365 平臺能力和開發場景,Microsoft Graph它起著關鍵作用,今天就給大家展示一下Excel API毫無疑問,現得淋漓盡致,毫無疑問,我在這里演示的只是一些皮毛,更多有趣的場景,還等著你的發現。
推薦課程
-
唐山現代多元Design全能班
346人 報名小編
-
唐山現代多元Design精英班
393人 報名小編
-
唐山現代藝術設計全能班
373人 報名小編
-
唐山電商課程培訓班
331人 報名小編
-
唐山專業盲打指法訓練
251人 報名小編